Slik konverterer endringsdato for å Datoer

Den ctime variabel og funksjon med samme navn, både vanligvis benyttes i flere programmeringsspråk og databaser for å identifisere en bestemt øyeblikk i tid, bruker den såkalte "Unix Time" format, definert som mengden av sekunder etter å ha gått fra midnatt på 1 januar, 1970. Mens de fleste språk, for eksempel C ++, PHP eller Java, inneholder forhåndsdefinerte funksjoner som brukes til å konvertere slike variabler inn i deres tilsvarende dato, kan du gjøre det samme regnestykket for hånd.

Bruksanvisning

1 Del ctime variabel, kalt "N" fra dette punktet og utover, med 86 400 for å beregne antall dager. Round det ned til nærmeste hele tall og skrive det ned. Dette nummeret vil være "TD" fra dette punktet og fremover. Beregn (N - TD * 86400) og skrive det ned. Dette nummeret vil være "RS" fra dette punktet og utover.

For eksempel, hvis N = 4956352625, da TD = 57365 og RS = 16625.

2 Divide TD med 365 og runde det ned til nærmeste hele tall. Ring resultatet "TY" og skrive det ned. Beregn (TD - TY * 365), kaller resultatet "RD" og skrive det ned. Divide TY med fire, runde det ned til nærmeste hele tall, kaller resultatet "RLY", og skrive det ned. Hvis RLY er større enn RD, reduseres TY ved en og øke RD ved 365. Hvis RLY fremdeles større enn RD gjenta prosessen med avtagende TY ved en og øke RD ved 365 til RLY er lavere enn eller lik RD.

For eksempel, hvis TD = 57365, så TY = 157, RD = 60 og RLY = 39.

3 Beregn (1970 + TY), kaller det "Y" og skrive det ned. Divide (Y - 1) med fire, runde det ned til nærmeste hele tall og multiplisere resultatet med fire. Ring resultatet "CLY" - dette er den siste skuddår å ha helt bestått før Y.

For eksempel, hvis TY = 157, da Y = 2127 og CLY = 2124.

4 Beregn (CLY - 1972), dele det med fire og legge en kaller resultatet "TLY" og skrive det ned. TLY skal være et helt tall som er forskjellig fra RLY med ikke mer enn en; mesteparten av tiden, vil TLY og RLY være identiske. Hvis disse to tallene avviker med mer enn én, har du gjort en feil; gjenta prosessen fra trinn én.

For eksempel, hvis CLY = 2124, da TLY = 39.

5 Del CLY med 100 og runde det ned til nærmeste hele tall. Ring resultatet "TC" og skrive det ned. Hvis TC er lik 19, definerer en ny variabel kalt "NS" som er lik null.

Ellers trekker 20 fra TC, kaller det "NTC" og skrive det ned. Del NTC med fire og runde det ned til nærmeste hele tall. Ring resultatet "NTCR" og skrive det ned. Trekk NTCR fra NTC, kaller resultatet "NS" og skrive det ned. Formålet med denne beregningen er å bestemme mengden av årene mellom 1972 og CLY hvis tallene var delelig med fire som ikke var skuddår: i den gregorianske kalenderen, de er de årene som er helt delelig med 100, men ikke med 400, slik som årene 2100, 2200, 2300, 2500 og så videre.

For eksempel, hvis CLY = 2124, da TC = 21, NTC = 1, NTCR = 0 og NS = 1.

6 Beregn (TLY - NS), kaller resultatet "LY" og skrive det ned.

For eksempel, hvis TLY = 39 og NS = 1, deretter LY = 38.

7 Beregn (RD - LY), kaller resultatet "CD" og skrive det ned.

For eksempel, hvis RD = 60 og LY = 38, deretter CD = 22.

8 Finn ut om Y er et skuddår ved å sjekke om det er helt delelig med fire. Hvis det ikke er det, er det ikke et skuddår. Hvis det er, er det et skuddår med mindre det er også helt delelig med 100, og ikke helt delelig med 400.

Hvis CD er større enn eller lik 366 og Y er et skuddår, øke Y av ett og redusere CD ved 366; hvis Y ikke er et skuddår, øker Y ved en og redusere CD ved 365. Hvis CD fremdeles større enn eller lik 366 gjenta denne prosess inntil den blir lavere enn 366.

Hvis CD er nå lik 365 og Y er ikke et skuddår, øke Y av ett og redusere CD ved 365. Dersom Y er et skuddår både CD og Y forblir uendret.

Hvis CD er nå lavere enn 365 både CD og Y forblir uendret.

For eksempel, hvis Y = 2127 og CD = 22, de begge forblir uendret.

9 Beregn måned med følgende metode. Først, hvis verdien av Y har endret seg bestemme hvorvidt den nye Y er et skuddår eller ikke ved hjelp av beregningen som er beskrevet i trinn åtte.

Dersom Y er ikke et skuddår, brukes følgende metode.
Hvis CD er større enn eller lik null, men lavere enn 31, og "M" er "januar" og "D" er lik (CD + 1).
Hvis CD er større enn eller lik 31, men mindre enn 59, og "M" er "februar" og "D" er lik (CD - 30).
Hvis CD er større enn eller lik 59, men mindre enn 90, og "M" er "March" og "D" er lik (CD - 58).
Hvis CD er større enn eller lik 90, men mindre enn 120, og "M" er "April" og "D" er lik (CD - 89).
Hvis CD er større enn eller lik 120, men lavere enn 151, og "M" er "May" og "D" er lik (CD - 119).
Hvis CD er større enn eller lik 151, men lavere enn 181, og "M" er "June" og "D" er lik (CD - 150).
Hvis CD er større enn eller lik 181, men lavere enn 212, og "M" er "juli" og "D" er lik (CD - 180).
Hvis CD er større enn eller lik 212, men lavere enn 243, og "M" er "August" og "D" er lik (CD - 211).
Hvis CD er større enn eller lik 243, men lavere enn 273, og "M" er "September" og "D" er lik (CD - 242).
Hvis CD er større enn eller lik 273, men lavere enn 304, og "M" er "Oktober" og "D" er lik (CD - 272).
Hvis CD er større enn eller lik 304, men lavere enn 334, og "M" er "November" og "D" er lik (CD - 303).
Hvis CD er større enn eller lik 334, men lavere enn 365, og "M" er "desember" og "D" er lik (CD - 333).

Hvis Y er et skuddår, brukes følgende metode.
Hvis CD er større enn eller lik null, men lavere enn 31, og "M" er "januar" og "D" er lik (CD + 1).
Hvis CD er større enn eller lik 31, men mindre enn 60, og "M" er "februar" og "D" er lik (CD - 30).
Hvis CD er større enn eller lik 60, men mindre enn 91, og "M" er "March" og "D" er lik (CD - 59).
Hvis CD er større enn eller lik 91, men mindre enn 121, og "M" er "April" og "D" er lik (CD - 90).
Hvis CD er større enn eller lik 121, men lavere enn 152, og "M" er "May" og "D" er lik (CD - 120).
Hvis CD er større enn eller lik 152, men lavere enn 182, og "M" er "June" og "D" er lik (CD - 151).
Hvis CD er større enn eller lik 182, men lavere enn 213, og "M" er "juli" og "D" er lik (CD - 181).
Hvis CD er større enn eller lik 213, men lavere enn 244, og "M" er "August" og "D" er lik (CD - 212).
Hvis CD er større enn eller lik 244, men lavere enn 274, og "M" er "September" og "D" er lik (CD - 243).
Hvis CD er større enn eller lik 274, men lavere enn 305, og "M" er "Oktober" og "D" er lik (CD - 273).
Hvis CD er større enn eller lik 305, men lavere enn 335, og "M" er "November" og "D" er lik (CD - 304).
Hvis CD er større enn eller lik 335, men lavere enn 366, og "M" er "desember" og "D" er lik (CD - 334).

For eksempel, hvis Y = 2127 og CD = 22, og M er januar og D = 23.

10 Del RS av 3600 og runde det ned til nærmeste hele tall. Ring resultatet "H" og skrive det ned. H bør ikke være større enn 23. Hvis det er, du har gjort en feil; gjenta hele prosessen fra starten. Beregn (RS - H * 3600), kaller resultatet "RSH" og skrive det ned.

For eksempel, hvis RS = 16625, deretter H = 4 og RSH = 2225.

11 Divide RSH med 60 og runde det ned til nærmeste hele tall. Ring resultatet "M" og skrive det ned. Beregn (RSH - M * 60), kaller resultatet "S" og skrive det ned.

For eksempel, hvis RSH = 2225, da M = 37 og S = 5.

12 Skriv resultatet som "H: M: S, DM Y." Dette er datoen som tilsvarer din endringsdato verdi.

For eksempel, hvis N = 4956352625, er resultatet "4:37:05 23. januar 2127."

Hint

  • Sjekk resultatet ved hjelp av et online omformer som den som finnes på Fourmilab nettside eller ved å skrive inn følgende formel i et regneark, erstatte "VERDI" med endringsdato verdi: = DATO (1970,1,1) + VERDI / 86400. Avhengig av regnearkprogrammet må du kanskje endre formatet i cellen til "Date" før resultatet vises riktig.
  • Enkelte programmer, særlig eldre som Visual Studio .NET 2003, bare lagre ctime variabler som 32-bits signert heltall gjør det umulig å spesifisere hvilket som helst tidspunkt etter 3:14:07 på 19 januar 2038, noe som tilsvarer i størst mulig verdi for en 32-bits heltall, 2147483647. Nyere biter av programvare unngå det problemet ved å bruke 64-bits signert heltall.