Come convertire CTime alle Date

February 9

La variabile CTime e la funzione con lo stesso nome, entrambi comunemente utilizzato in diversi linguaggi di programmazione e database per identificare un momento specifico nel tempo, utilizzare il cosiddetto formato "Unix Time", definita come la quantità di secondi dopo aver passato dalla mezzanotte del 1 gennaio, 1970. Mentre la maggior parte delle lingue, come C ++, PHP o Java, contiene funzioni predefinite utilizzate per convertire tali variabili nella loro data corrispondente, si può fare lo stesso calcolo a mano.

istruzione

1 Dividere la variabile CTime, denominata "N" da questo punto in poi, da 86400 per calcolare il numero di giorni. Rotonda giù al numero intero più vicino e scrivere. Questo numero sarà "TD" da questo punto in poi. Calcolare (N - TD * 86400) e scrivere. Questo numero sarà "RS" da questo punto in poi.

Ad esempio, se N = 4956352625, quindi TD = 57365 e RS = 16625.

2 Divide TD da 365 e intorno ad essa per difetto al numero intero più vicino. Chiamare il risultato "ty" e scrivere. Calculate (TD - TY * 365), chiamare il risultato "RD" e scrivere. Divide TY per quattro, intorno ad essa per difetto al numero intero più vicino, chiamare il risultato "RLY" e scrivere. Se RLY è maggiore di RD, diminuire TY per uno e aumentare la RD 365. Se RLY è ancora superiore RD ripetere il processo di diminuzione TY per uno e aumentando RD da 365 fino RLY è inferiore o uguale a RD.

Ad esempio, se TD = 57365, quindi TY = 157, RD = 60 e RLY = 39.

3 Calcolare (1970 + TY), lo chiamano "Y" e scrivere. Divide (Y - 1) per quattro, intorno ad essa per difetto al numero intero più vicino e moltiplicare il risultato per quattro. Chiamare il risultato "CLY" - questo è l'ultimo anno bisestile aver completamente superato prima Y.

Ad esempio, se TY = 157, allora Y = 2127 e CLY = 2124.

4 Calcolare (CLY - 1972), dividerlo per quattro e aggiungerne uno, chiamare il risultato "TLY" e scrivere. TLY deve essere un numero intero diverso da RLY da non più di uno; la maggior parte del tempo, TLY e RLY sarà identico. Se questi due numeri differiscono di più di uno, si è fatto un errore; ripetere la procedura dal passo uno.

Ad esempio, se CLY = 2124 poi TLY = 39.

5 Dividere CLY per 100 e intorno ad essa per difetto al numero intero più vicino. Chiamare il risultato "TC" e scrivere. Se TC è uguale a 19, definire una nuova variabile denominata "NS" pari a zero.

In caso contrario, sottrarre 20 da TC, lo chiamano "NTC" e scrivere. Dividere NTC per quattro e intorno ad essa per difetto al numero intero più vicino. Chiamare il risultato "NTCR" e scrivere. Sottrarre NTCR da NTC, chiamare il risultato "NS" e scrivere. Lo scopo di questo calcolo è quello di determinare la quantità di anni tra il 1972 e CLY cui numeri erano divisibili per quattro che non sono stati anni bisestili: nel calendario gregoriano, quelli sono gli anni che sono interamente divisibile per 100, ma non per 400, come ad come gli anni 2100, 2200, 2300, 2500 e così via.

Ad esempio, se CLY = 2124 allora TC = 21, NTC = 1, NTCR = 0 e NS = 1.

6 Calcolare (TLY - NS), chiamare il risultato "LY" e scrivere.

Ad esempio, se TLY = 39 e NS = 1, allora LY = 38.

7 Calcolare (RD - LY), chiamare il risultato "CD" e scrivere.

Ad esempio, se RD = 60 e LY = 38, quindi CD = 22.

8 Determinare se Y è un anno bisestile per verificare se è del tutto divisibile per quattro. Se non lo è, non è un anno bisestile. Se lo è, è un anno bisestile meno che non sia anch'essa interamente divisibile per 100 e non interamente divisibile per 400.

Se CD è maggiore o uguale a 366 e Y è bisestile, aumentare Y per uno e diminuire CD 366; se Y non è un anno bisestile, aumentare Y per uno e diminuire CD 365. Se il CD è ancora superiore o uguale a 366 ripetere questo processo fino a quando diventa inferiore a 366.

Se il CD è ora pari a 365 e Y non è un anno bisestile, aumentare Y per uno e diminuire CD 365. Se Y è un anno bisestile CD e Y rimangono invariati.

Se il CD è ora inferiore a 365 CD e Y rimangono invariati.

Ad esempio, se Y = 2127 e CD = 22, entrambi rimangono invariati.

9 Calcolare il mese utilizzando il seguente metodo. In primo luogo, se il valore di Y è cambiato determinare se il nuovo Y è bisestile o meno in base al calcolo descritto nel passaggio otto.

Se Y non è un anno bisestile, utilizzare il seguente metodo.
Se CD è maggiore o uguale a zero, ma inferiore a 31, quindi "M" è "gennaio" e "D" è uguale a (CD + 1).
Se CD è maggiore o uguale a 31, ma inferiore a 59, quindi "M" è "Febbraio" e "D" è uguale a (CD - 30).
Se CD è maggiore o uguale a 59, ma inferiore a 90, quindi "M" è "March" e "D" è uguale a (CD - 58).
Se CD è maggiore o uguale a 90, ma inferiore a 120, poi "M" è "Aprile" e "D" è uguale a (CD - 89).
Se CD è maggiore o uguale a 120, ma inferiore a 151, poi "M" è "Maggio" e "D" è uguale a (CD - 119).
Se CD è maggiore o uguale a 151, ma inferiore a 181, poi "M" è "June" e "D" è uguale a (CD - 150).
Se CD è maggiore o uguale a 181, ma inferiore a 212, poi "M" è "Luglio" e "D" è uguale a (CD - 180).
Se CD è maggiore o uguale a 212, ma inferiore a 243, poi "M" è "August" e "D" è uguale a (CD - 211).
Se CD è maggiore o uguale a 243, ma inferiore a 273, poi "M" è "Settembre" e "D" è uguale a (CD - 242).
Se CD è maggiore o uguale a 273, ma inferiore a 304, poi "M" è "October" e "D" è uguale a (CD - 272).
Se CD è maggiore o uguale a 304, ma inferiore a 334, poi "M" è "Novembre" e "D" è uguale a (CD - 303).
Se CD è maggiore o uguale a 334, ma inferiore a 365, poi "M" è "December" e "D" è uguale a (CD - 333).

Se Y è un anno bisestile, utilizzare il seguente metodo.
Se CD è maggiore o uguale a zero, ma inferiore a 31, quindi "M" è "gennaio" e "D" è uguale a (CD + 1).
Se CD è maggiore o uguale a 31, ma inferiore a 60, quindi "M" è "Febbraio" e "D" è uguale a (CD - 30).
Se CD è maggiore o uguale a 60, ma inferiore a 91, quindi "M" è "March" e "D" è uguale a (CD - 59).
Se CD è maggiore o uguale a 91, ma inferiore a 121, poi "M" è "Aprile" e "D" è uguale a (CD - 90).
Se CD è maggiore o uguale a 121, ma inferiore a 152, poi "M" è "Maggio" e "D" è uguale a (CD - 120).
Se CD è maggiore o uguale a 152, ma inferiore a 182, poi "M" è "June" e "D" è uguale a (CD - 151).
Se CD è maggiore o uguale a 182, ma inferiore a 213, poi "M" è "Luglio" e "D" è uguale a (CD - 181).
Se CD è maggiore o uguale a 213, ma inferiore a 244, poi "M" è "August" e "D" è uguale a (CD - 212).
Se CD è maggiore o uguale a 244, ma inferiore a 274, poi "M" è "Settembre" e "D" è uguale a (CD - 243).
Se CD è maggiore o uguale a 274, ma inferiore a 305, poi "M" è "October" e "D" è uguale a (CD - 273).
Se CD è maggiore o uguale a 305, ma inferiore a 335, poi "M" è "Novembre" e "D" è uguale a (CD - 304).
Se CD è maggiore o uguale a 335, ma inferiore a 366, poi "M" è "December" e "D" è uguale a (CD - 334).

Ad esempio, se Y = 2127 e CD = 22, allora M è gennaio e D = 23.

10 Dividere RS per 3600 e intorno ad essa per difetto al numero intero più vicino. Chiamare il risultato "H" e scrivere. H non deve essere maggiore di 23. Se lo è, si è fatto un errore; ripetere l'intero processo fin dall'inizio. Calcolare (RS - H * 3600), chiamano il risultato "RSH" o verso il basso.

Ad esempio, se RS = 16625, quindi H = 4 e RSH = 2225.

11 Divide RSH del 60 e intorno ad essa per difetto al numero intero più vicino. Chiamare il risultato "M" e scrivere. Calcolare (RSH - M * 60), chiamare il risultato "S" e scrivere.

Ad esempio, se RSH = 2225, allora M = 37 e S = 5.

12 Scrivere il risultato come "H: M: S, DM Y." Questa è la data corrispondente al valore di CTime.

Ad esempio, se N = 4.956.352,625 mila, il risultato è "04:37:05 23 gennaio 2127."

Consigli e avvertenze

  • Controllare il risultato utilizzando un convertitore online, come quello trovato sul sito Fourmilab o inserendo la seguente formula in un foglio di calcolo, sostituendo "VALORE" con il valore CTime: = DATE (1970,1,1) + VALORE / 86400. A seconda del programma di foglio di calcolo potrebbe essere necessario cambiare il formato della cella per "Data" prima che venga visualizzato correttamente risultato.
  • Alcuni programmi, in particolare quelle più vecchie come Visual Studio .NET 2003, solo memorizzare le variabili CTime come interi con segno a 32 bit rendendo impossibile specificare qualsiasi momento nel tempo dopo 3:14:07 il 19 gen 2038, che corrisponde al massimo possibile valore per un intero con segno a 32 bit, 2147483647. pezzi più recenti del software di evitare questo problema utilizzando interi con segno a 64 bit.