Just nu i M3-nätverket
Gå till innehåll

Datumformat


Pinkpanter

Rekommendera Poster

Jag har gjort ett program som är beroende av datumformatet:

yyyy-MM-dd

Jag använder funktionen FormatDateTime för att "tvinga" fram detta format. Men om användaren får för sig att ställa in Windows datumformat till det engelska formatet dd/MM/yyyy eller något annat utländskt format så blir det ett felmeddelade när programmet försöker formatera om datumet.

Finns det någon lösning på detta?

 

 

Länk till kommentar
Dela på andra webbplatser

Anjuna Moon

Konstigt, de lokala inställningarna skall ju inte påverka det interna datumformatet, vilket du får med Date eller Now.

Om du skriver ut värdet på Now respektive Date (TDateTime lagras som en double) och sedan ändrar de regionala inställningarna och skriver ut dem igen, är värdet på double:n desamma?

 

Länk till kommentar
Dela på andra webbplatser

För att förklara det hela närmare:

Jag använder en TDateTimePicker där datumet formateras till

yyyy-MM-dd

Datumet läggs in i ett datumfält i en Accessdatabas.

Vid denna formatering kommer ett felmeddelande från Delphi

att datumformatet är felaktigt om Windows datumformat är inställt

på något annat vis än ovanstående format.

Jag använder Delphi 2005 Pro.

 

Länk till kommentar
Dela på andra webbplatser

Jag har inte jobbat med ver. 2005 men du kan juh alltid "skapa" ett svenskt datumformat genom att skapa en sträng med Year +"-"+ Month +"-"+ Day... Eller så skriver du uttryckligen vilket format du vill få ut datumet i.

 

datumet är :=FormatDateTime(yyyy,"-",mm,"-",dddd);

Ungefär...

 

 

 

Länk till kommentar
Dela på andra webbplatser

  • 4 veckor senare...
Roland Bengtsson

Windows regionala inställningar är alltid en huvudvärk för man kan aldrig förutsätta ett visst format. men du kan ju alltid göra såhär att du har ett internt format i ditt program som du bestämmer tex yyyy-mm-dd.

Isåfall får du ändra variabeln shortDateFormat när programmet startar.

Anledningen är att många Delphi-funktioner använder dom här variablerna för konvertering. Tex StrToDate, men nackdelen är att ett excedption kastas om strängen har fel format. TryStrToDate är då bättre eftersom den returnerar false om strängen har fel format.

Se http://www.delphibasics.co.uk/RTL.asp?Name=shortDateFormat för en förklaring om variabeln.

 

Delphi-programm innehåller ett antal globala variabler som sätts när programmet startar. Värdet bestäms av dom regionala inställningarna.

Om du kikar på source\rtl\sysutils.pas finns en lista och beskrivning på vad dom gör.

 

Men har man ett internt format får man passa sej så fort man exporterar eller importerar data. Att tex lagra datum som en sträng i en databas och sen läsa in den på en annan dator med andra regionala inställningar fungerar förstås inte.

 

 

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...