Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Ränka ut resterande tid

Postades av 2002-12-09 20:53:55 - Peter Larsson, i forum visual basic - allmänt, Tråden har 11 Kommentarer och lästs av 828 personer

Jag har ett datum och ett klockslag och vill räkna ut hur lång tid det är kvar tills dess från nuvarande datum och klockslag. Svaret ska se ut ungefär så här: "x dagar, x timmar, x minuter".

Ex:

Från: 021209 20:49
Till: 021209 21:49
Differens: 1 timme

Hur gör jag utan att använda mig av 100 if-satser med DateDiff()?

/ Peter


Svara

Sv: Ränka ut resterande tid

Postades av 2002-12-09 21:45:52 - Sven Åke Persson

Hej
Option Explicit
Private Sub Command1_Click()
'Så här ungefär skulle jag göra
Dim highDate As Double, highHour As String
Dim lowDate As Double, lowHour As String
Dim dagar As Long
highHour = "15:00"
highDate = CDate("02-12-24" & " " & highHour) 'Kalle Anka kommer
'************************************************
lowHour = Format$(Now, "hh:mm")
lowDate = CDate(Date & " " & lowHour) 'här skriver du det låga datumet
'************************************************
dagar = Int(highDate) - Int(lowDate)

If CSng(CDate(lowHour)) > CSng(CDate(highHour)) Then dagar = dagar - 1
If dagar > 0 Then
MsgBox Str$(dagar) & " dagar " & _
Format$(highDate - lowDate, "hh:mm")
Else
MsgBox Format$(highDate - lowDate, "hh:mm")
End If
End Sub

'/Sven


Svara

Sv: Ränka ut resterande tid

Postades av 2002-12-10 09:36:01 - Peter Larsson

Skulle vilja ha lite förklaringar till din kod. Vad gör CSng och varför dagar = dagar - 1 i if-satsen?

/ Peter


Svara

Sv: Ränka ut resterande tid

Postades av 2002-12-10 10:00:12 - Niklas Jansson

CSng betyder att man skall omvandlA klockslaget till ett flyttal.
Sedan räknas skillnaden mellan dessa ut, och om klockan är större i det ena fallet så är det inte ett helt dygn, och då måste man minska antalet dygn med ett.

Skulle nog tro att det inte behövs... räcker det inte med DateDiff ?


/Niklas Jansson


Svara

Sv: Ränka ut resterande tid

Postades av 2002-12-10 10:07:54 - Andreas Hillqvist

<code>
Public Function Differens(Datum1 As Date, Datum2 As Date)
Dim Diff As Long
Dim År As Long
Dim Sekunder As Long
Dim Minuter As Long
Dim Timmar As Long
Dim Dagar As Long
Dim Veckor As Long
Diff = (Datum2 * 86400) - (Datum1 * 86400)
Sekunder = Diff Mod 60
Select Case Sekunder
Case 1
Differens = "en sekund"
Case Is > 1
Differens = Sekunder & " sekunder"
End Select
Diff = Diff \ 60

Minuter = Diff Mod 60
Select Case Minuter
Case 1
Differens = "en minut " & Differens
Case Is > 1
Differens = Minuter & " minuter " & Differens
End Select
Diff = Diff \ 60

Timmar = Diff Mod 24
Select Case Timmar
Case 1
Differens = "en timme " & Differens
Case Is > 1
Differens = Timmar & " timmar " & Differens
End Select
Diff = Diff \ 24

Dagar = Diff Mod 7
Select Case Dagar
Case 1
Differens = "en dag " & Differens
Case Is > 1
Differens = Dagar & " dagar " & Differens
End Select
Diff = Diff \ 7

Veckor = Diff
Select Case Veckor
Case 1
Differens = "en vecka " & Differens
Case Is > 1
Differens = Dagar & " veckor " & Differens
End Select

End Function
</code>


Svara

Sv: Ränka ut resterande tid

Postades av 2002-12-10 11:01:09 - Sven Åke Persson

Hej
Som vanligt Andreas tar betalt för hur många programrader
han kan få ihop.Många rader bra och dyra program :-)
/Sven


Svara

Sv: Ränka ut resterande tid

Postades av 2002-12-10 12:35:57 - Peter Larsson

>Skulle nog tro att det inte behövs... räcker det inte med DateDiff ?

Det räcker inte med DateDiff, jag testade.

/ Peter


Svara

Sv: Ränka ut resterande tid

Postades av 2002-12-10 13:16:46 - Andreas Hillqvist

<code>
Function DelDifferens(Diff As Long, Faktor as long, Text1 as String, TextX As String) As String
Dim Part As long
Part = Diff Mod Faktor
Diff = Diff \ Faktor
Select Case Part
Case 1
DelDifferens = "en " & Text1 & " "
Case Is > 1
DelDifferens = Sekunder & TextX & " "
End Select
End Function

Public Function Differens(Datum1 As Date, Datum2 As Date)
Dim Diff As Long
Diff = (Datum2 * 86400) - (Datum1 * 86400)
Differens = DelDifferens(Diff, 60, "sekund", "sekunder")
Differens = DelDifferens(Diff, 60, "minut", "minuter") & Differens
Differens = DelDifferens(Diff, 24, "timme", "timmar") & Differens
Differens = DelDifferens(Diff, 7, "dag", "dagar") & Differens

Select Case Diff
Case 1
Differens = "en vecka " & Differens
Case Is > 1
Differens = Diff & " veckor " & Differens
End Select

End Function

</code>

Är du nöjd nu?

Annars är du välkommen att minska antalet rader ytterligare.


Svara

Sv: Ränka ut resterande tid

Postades av 2002-12-10 13:25:09 - Sven Åke Persson

Hej
Orkar inte kolla, det är säkert bra (för dig)
Var och en blir salig på sin tro.

Konstaterar att det finns olika sätt att angripa ett problem.
Mitt sätt funkade som frågeställaren tänkt sig, du blandar in
veckor mm. som aldrig efterfrågats.

Ha det ,
ge faen i pepparkakor dom inhåller tydligen också nåt gift Vi inte tål.

/Ds


Svara

Sv: Ränka ut resterande tid

Postades av 2002-12-10 14:07:47 - Andreas Hillqvist

<code></code>
I så fall är mitt förslag följande:
<code>
Public Function Differens(Datum1 As Date, Datum2 As Date) As String
Dim Delta As Date
Delta = Datum2 - Datum1
Differens = CLng(Int(Delta)) & " dagar, " & Hour(Delta) & " timmar, " & Minute(Delta) & " minuter."
End Function
</code>
Då har du betydligt mer rader kod i ditt exempel.


Svara

Sv: Ränka ut resterande tid

Postades av 2002-12-10 16:15:47 - Sven Åke Persson

Hej
Ja men skillnaden är att mitt blir rätt. Men inte ditt. !!

Kör mot din function

Private Sub Command1_Click()
'Till Kalle Anka kommer , då blir du väl glad
'Dagar (läs dygn)
MsgBox Differens(Now, "02-12-24 15:00") 'Till Kalle Anka kommer
End Sub

EDIT :
Men jag får kanske tänka om, ditt förslag visar på det exakta tidsmåttet,
mitt visar på då man anser att dygnet börjar 00:00:01

Då skall man nog vara försiktig med att skriva dagar , all redovisning skall ske i timmar.
Om jag skall svara ett ungt förväntansfullt barn så blir det antal datum och timmar.
Kanske jag har haft fel denna månad ? Logga in någon och döm av.

/Sven





Svara

Sv: Ränka ut resterande tid

Postades av 2002-12-10 18:29:56 - Peter Larsson

Andreas exempel fungerar utmärkt på datum som inte redan varit, men om man försöker räkna ut hur lång tid det har gått sedan t.ex. 021201, fungerar det inte längre. Det blir en negativ dag för mycket i resultatet, vilket jag försökte åtgärda utan allt för många rader, dock utan resultat. Låt se om Andreas klarar detta utan att överskrida antalet rader.

/ Peter



Svara

Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 170
27 953
271 705
588
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies