Avatar billede toni01 Nybegynder
01. august 2003 - 12:23 Der er 14 kommentarer og
1 løsning

Konvertering af dato

Hej eksperter,

Skal teste på om et dokument er udløbet.

dtmEnddate = cDate("2003-04-08 12:07") '(yyyy-dd-mm hh:nn)
if DateDiff("d", Date, dtmEnddate) > 0 then
  msgbox "dokumentet er udløbet."
end if

problemet er at dtmEnddate bliver til den 8 april.
Er der en der har en løsning?
Avatar billede hiks Nybegynder
01. august 2003 - 13:30 #1
det er jo også den dato du har i det engelske datoformat...

ellers skulle der jo have stået "2003-08-04 12:07" som er om et par dage...

/hiks
Avatar billede toni01 Nybegynder
01. august 2003 - 13:33 #2
Ja men datoformatet ser ud som det gør, og det må jeg så tage højde for i en løsning.
Avatar billede toni01 Nybegynder
01. august 2003 - 13:37 #3
Man kan selvfølgelig og rette i strengen og bytte om på dd-mm men jeg håbede på der var en som havde en mindre suspekt løsning.
Avatar billede hiks Nybegynder
01. august 2003 - 13:39 #4
jeg forstår vist ikke spørgsmålet helt så!

dtmEnddate skal være lig med den 4. aug eller hvad? For det kan du jo kun få det til at være hvis du ændrer i formatet eller begynder at splitte strengen du har stående nu!

Du vil jo aldrig få den messagebox op nu - for nu vil datediff returnere et negativt tal, da det jo i dag er den 1. aug og det andet er den 8. april.

/hiks
Avatar billede toni01 Nybegynder
01. august 2003 - 13:42 #5
Ja det var derfor jeg skrev (yyyy-dd-mm hh:nn) altså den 4 august.
Avatar billede hiks Nybegynder
01. august 2003 - 13:46 #6
Dim dtmEnddate As String
dtmEnddate = Format("2003-04-08", "mm-dd-yyyy hh:nn") '(yyyy-dd-mm hh:nn)
If DateDiff("d", Date, dtmEnddate) > 0 Then
  MsgBox "dokumentet er udløbet."
Else
  MsgBox DateDiff("d", dtmEnddate, Date)
End If
Avatar billede hiks Nybegynder
01. august 2003 - 13:47 #7
så burde den være der... men ved ikke hvor godt det holder... :o)

/hiks
Avatar billede toni01 Nybegynder
01. august 2003 - 14:03 #8
På min maskine med engelsk opsætning holder den ikke )0: problemet er det samme, man fortæller Hvilket format man ønsker at formatere til, men det afhænger af maskinopsætningen hvordan den opfatter det der skal konverteres.
Hvis man dog bare havde en optional parameter hvor man kunne angive det.
Avatar billede hiks Nybegynder
01. august 2003 - 14:12 #9
kan du så ikke lave noget midlertidigt således at du kan bruge datepart til at sammensætte det i lige dit format...

dtmEnddate = CDate("2003-04-08 12:07") '(yyyy-dd-mm hh:nn)

ukdate = DatePart("d", dtmEnddate)
ukmonth = DatePart("m", dtmEnddate)
ukyear = DatePart("yyyy", dtmEnddate)

Dim temp As String

temp = ukmonth & "-" & ukdate & "-" & ukyear

If DateDiff("d", Date, temp) > 0 Then
  MsgBox "dokumentet er udløbet."
End If
Avatar billede toni01 Nybegynder
01. august 2003 - 14:20 #10
Hvis jeg skal lave en her og nu løsning er det nok best jeg strengen "2003-04-08 12:07" og laver den om til "2003-08-04 12:07" derefter kan jeg køre en cdate("2003-08-04 12:07"), Det ville virke her og nu. På ovenstående måde bliver dtmEnddate = CDate("2003-04-08 12:07") igen til en dag i april, ved engelsk opsætning.
Avatar billede hiks Nybegynder
01. august 2003 - 16:39 #11
ja men mit forslag gik jo også på at du så selv skulle bytte rundt vha. datepart så det virkede... dét det baserer sig på er vel om du kan komme til at få det i et slutformat som du kan bruge og det kan du så selv lave vha. datepart funktionen som jeg har vist dig...

du kan jo hvis det giver samme resultat nu - bytte rundt i måden hvorpå temp strengen bliver lavet så ukdate kommer før ukmonth

/hiks
Avatar billede fgsupermand Nybegynder
02. august 2003 - 11:37 #12
Jeg tror heller ikke helt jeg forstå spørgsmålet, datoer i Visual Basic bliver da altid opgivet i amerikansk dataformat (eller hvad det datoformat så end hedder)

Så hvis du skriver: "2003-04-08 12:07" så er det den 4. april 2003 kl 12:07

Så du SKAL skrive:
dtmEndDate = "2003-08-04 12:07"
eller
dtmEndDate = 37837.50486
Avatar billede tjp Mester
03. august 2003 - 02:23 #13
>> fqsupermand
8. april, ikke 4.!
;-)
Avatar billede fgsupermand Nybegynder
03. august 2003 - 10:14 #14
hov det var en smutter :)
Avatar billede toni01 Nybegynder
04. august 2003 - 10:05 #15
Ja men denne dato er gemt i et XMLdokument som ISO format, og der skal datoen læses som tidligere beskrevet.

Jeg prøver Enten at arbejde videre med hiks sidste forslag, eller formatere strengen om så måned skrives som Januar..... Derpå laver cdate datediff...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

Seneste spørgsmål Seneste aktivitet
I dag 10:21 Ny printer, men hvilken Af mort1 i Printere
I går 19:41 USB på Linux Af Uvanga i Linux
12/0818:26 Hvilken type mus Af mort1 i PC
11/0813:21 ms Forms Af leahcim i Andet software
10/0821:30 Blokeret på Snapchat? Af LineP i Chat & Messaging