2012-01-25 4 views
0

Je veux convertir 12/31/2099 à l'heure d'Unix en utilisant PHP. J'ai essayé strtotime('12/31/2099') mais la fonction renvoie null.PHP temps de conversion unix

J'ai essayé de le convertir en temps Unix en utilisant un outil de conversion en ligne qui donne 4102358400 qui, lorsqu'il est transformé en une date donne 01/18/2038.

Comment puis-je convertir les dates en heure Unix et le convertir de nouveau en un format lisible comme 12/31/2099?

+0

comme une autre question, quel serait le nombre pour être 31.12.2099? – commonpike

Répondre

1

Les horodatages Unix 32 bits sont épuisés en 2038. Par conséquent, si vous utilisez un système 32 bits, cela peut provoquer un problème.

+2

Lien pour référence: http://en.wikipedia.org/wiki/Year_2038_problem –

+0

@Rocket J'apprécie la référence. – Josh

1

L'horodatage unix d'un point dans le temps est le nombre de secondes écoulées depuis 1970-01-01 00:00:00 UTC jusqu'à ce moment. Le 2038-01-18 cela débordera un 32-bit signé int - appelez le bogue Y2K des unices. Cependant, il s'agit d'un problème d'implémentation et non d'algotithm: La plupart des implémentations actuelles utilisent un int 32bit non signé, mais il faut s'attendre à ce que les in bits 32 bits soient chose du passé avant 2038

Les solutions de contournement habituelles incluent une if-branch pour détecter si une date se trouve après le wraparound et ajuster en conséquence.

+0

Quelle serait la dernière date ou heure pour le système 32 bits? –

+0

@RahulSingh: 03:14:07 UTC le mardi 19 janvier 2038 (http://en.wikipedia.org/wiki/Year_2038_problem) –

2

Dans les anciennes versions de PHP (< 5.1.0), strtotime supportait une date maximale de mar, 19 jan 2038 03:14:07 UTC. Pour contourner cette limitation, effectuez une mise à niveau vers la version 5.1.0 ou ultérieure.

Les versions 64 bits ne sont pas affectées par cette limitation.

Pour plus d'informations, consultez les notes: à http://www.php.net/strtotime