Comment est-ce que vous n'avez pas reçu le crédit pour cette réponse encore?!
ne pas utiliser cette solution avant de lire daremon réponse
mais pourquoi ne pas 26/12/2012 01:05:41 travail?
Complètement une réponse valide, mais je suis surpris qu'Armin Ronacher la réponse n'est pas adaptée dans upvotes -- l'ambiguïté est TOUJOURS mauvais.
Cette réponse n'a fonctionné pour moi. Pourquoi dites-vous que cela ne fonctionne pas?
Eh bien, il semble, sur mon serveur, ce format n'est pas pris en charge. C'est peut-être différente de la vôtre.
Méfiez-vous strtotime('2012') pourrait entraîner un horodatage d'aujourd'hui et de temps de 20:12
Cette solution peut conduire à un comportement inattendu. Ceux qui utilisent PHP 5.3+ devrait adopter le prof. le Falken réponse, dans laquelle on a le plein contrôle sur le format de la date.
Notez que si vous ne réglez pas la !, le temps de la partie sera défini à l'heure actuelle, ce qui est différent de la première des quatre qui va l'utiliser à minuit, lorsque vous omettez le temps.
Encore une autre alternative est d'utiliser la IntlDateFormatter API:
Sauf si vous travaillez avec des chaînes date, le choix le plus facile est probablement DateTime.
Je recommande ce cours de ma réponse aujourd'hui.
Cela devrait être accepté de répondre.
Arggg. ! N'oubliez pas le ! Ma en fonction de la date d'horodatage était en train de changer à chaque rafraîchissement et me rend fou - car DateTime était utile d'ajouter l'heure actuelle, sans demander ou d'être dit. Grrr.
Être prudent avec des fonctions comme strtotime() que d'essayer de "deviner" ce que tu veux dire (il n'a pas le deviner, bien sûr, la les règles sont ici).
En effet 22-09-2008 sera analysée comme 22 septembre 2008, comme c'est la seule chose raisonnable.
Comment 08-09-2008 être analysé? Probablement 09 Août 2008.
Ce sujet 2008-09-50? Certaines versions de PHP analyser ce que 20 octobre 2008.
Donc, si vous êtes sûr que votre entrée est dans DD-MM-YYYY format, il est préférable d'utiliser la solution proposée par @Armin Ronacher.
Préoccupation valable. Je suppose que la fonction strtotime() s'appuie dans vos paramètres régionaux.
Remarque: sur la plupart des pays non anglophones, le format est dd-mm-yyyy, pas mm-dd-yyyy.
Si délicat et important. Est-il un droit de réponse pour elle?
La plupart des non-anglais parlé pays utilisent le premier format vous l'avez indiqué, mais la DB généralement de stocker la date dans YYYY-mm-dd La conversion n'arrive qu'à afficher pour les utilisateurs
juste regardé la doc et il semble que vous êtes en droit si par DB-vous dire à MySQL. Mais il ne semble pas ridicule de faire cela...
cette méthode fonctionne sur les deux Windows et Unix et est fuseau horaire conscient, ce qui est probablement ce que vous voulez si vous êtes sérieux au sujet de travailler avec des dates.
Si vous n'avez pas de soins sur le fuseau horaire, ou si vous voulez utiliser le fuseau horaire de votre serveur utilise:
C'est ce que j'ai toujours fait. Exploser sur - ou / ou . ou quelque chose comme ça séparés, puis mktime.
Il y a une note dans le manuel PHP pour le dernier paramètre de la fonction mktime: "depuis PHP 5.1.0, ce paramètre est devenu obsolète. En conséquence, le nouveau fuseau horaire fonctionnalités de gestion doit être utilisé à la place." Je n'ai pas encore de quoi découvrir les nouvelles fonctionnalités sont qu'ils parlent bien, comme ils n'ont pas liée à elle!
Cela dit, il a travaillé pour moi!
C'est beaucoup mieux que strtotime() Pour quelque raison strtotime() ne fonctionne pas sur certaines dates, et est donc très peu fiable.
À l'aide de la fonction strtotime() fonction que vous pouvez facilement convertir la date en timestamp
<?php
//set default timezone
date_default_timezone_set('America/Los_Angeles');//define date and time
$date = date("d M Y H:i:s");//output
echo strtotime($date);?>
Voici une solution simple et efficace à l'aide de la split et mtime fonctions:
$date="30/07/2010 13:24";//Date example
list($day, $month, $year, $hour, $minute)= split('[/:]', $date);//The variables should be arranged according to your date format and so the separators
$timestamp = mktime($hour, $minute,0, $month, $day, $year);
echo date("r", $timestamp);
Il a travaillé comme un charme pour moi.
Notez que la fonction split() est maintenant obsolète, mais si vous utilisez une vieille version de php, c'est vraiment génial de travailler!
Étant donné que la fonction strptime() ne fonctionne pas pour Windows et strtotime() peut retourner des résultats inattendus, je recommande d'utiliser date_parse_from_format():
Remarque: avec la fonction strtotime(): le séparateur est un slash (/), puis l'Américain m/d/y est supposé; que, si le séparateur est un tiret (-) ou un point (.), puis Européennes d-mon format est pris en charge. Donc, je pense que n'avez pas besoin d'utiliser strptime()
Si vous connaissez le format du strptime parce que strtotime ne une hypothèse pour le format, qui peut ne pas toujours être correct. Depuis strptime n'est pas implémentée dans Windows il y a une fonction personnalisée
function dateToTimestamp($date, $format, $timezone='Europe/Belgrade'){//returns an array containing day start and day end timestamps
$old_timezone=date_timezone_get();
date_default_timezone_set($timezone);
$date=strptime($date,$format);
$day_start=mktime(0,0,0,++$date['tm_mon'],++$date['tm_mday'],($date['tm_year']+1900));
$day_end=$day_start+(60*60*24);
date_default_timezone_set($old_timezone);return array('day_start'=>$day_start,'day_end'=>$day_end);}
$timestamps=dateToTimestamp('15.02.1991.','%d.%m.%Y.','Europe/London');
$day_start=$timestamps['day_start'];
De cette façon, vous laissez la fonction de savoir ce que le format de date que vous utilisez et même spécifier le fuseau horaire.
Veuillez être prudent sur time/zone si vous le réglez à enregistrer les dates dans la base de données, que j'ai eu un problème quand j'ai comparé les dates de mysql qui ont été convertis à timestamp à l'aide de strtotime. vous devez utiliser exactement même temps, de la zone avant la conversion de la date d'horodatage sinon, la fonction strtotime() utilisera par défaut le serveur de fuseau horaire.
PHP
strtotime()
donneQui fonctionne avec le pris en charge Formats de Date et Heure Docs.
26/12/2012 01:05:41
travail?strtotime('2012')
pourrait entraîner un horodatage d'aujourd'hui et de temps de 20:12Il est également
strptime()
qui attend exactement un format:date_parse_from_format
au lieu destrptime
.strptime
n'est pas mis en œuvre dans les plates-formes Windows.Avec
DateTime
API:De même avec la procédure de l'API:
Si le ci-dessus échoue parce que vous êtes à l'aide d'un format non pris en charge, vous pouvez utiliser
Notez que si vous ne réglez pas la
!
, le temps de la partie sera défini à l'heure actuelle, ce qui est différent de la première des quatre qui va l'utiliser à minuit, lorsque vous omettez le temps.Encore une autre alternative est d'utiliser la
IntlDateFormatter
API:Sauf si vous travaillez avec des chaînes date, le choix le plus facile est probablement DateTime.
!
Ma en fonction de la date d'horodatage était en train de changer à chaque rafraîchissement et me rend fou - car DateTime était utile d'ajouter l'heure actuelle, sans demander ou d'être dit. Grrr.Être prudent avec des fonctions comme
strtotime()
que d'essayer de "deviner" ce que tu veux dire (il n'a pas le deviner, bien sûr, la les règles sont ici).En effet
22-09-2008
sera analysée comme 22 septembre 2008, comme c'est la seule chose raisonnable.Comment
08-09-2008
être analysé? Probablement 09 Août 2008.Ce sujet
2008-09-50
? Certaines versions de PHP analyser ce que 20 octobre 2008.Donc, si vous êtes sûr que votre entrée est dans
DD-MM-YYYY
format, il est préférable d'utiliser la solution proposée par @Armin Ronacher.dd-mm-yyyy
, pasmm-dd-yyyy
.YYYY-mm-dd
La conversion n'arrive qu'à afficher pour les utilisateursSi vous avez PHP 5.3 ou supérieur,
cette méthode fonctionne sur les deux Windows et Unix et est fuseau horaire conscient, ce qui est probablement ce que vous voulez si vous êtes sérieux au sujet de travailler avec des dates.
Si vous n'avez pas de soins sur le fuseau horaire, ou si vous voulez utiliser le fuseau horaire de votre serveur utilise:
1222093324 (Cela dépend de votre zone serveur de temps...)
Si vous souhaitez spécifier dans quel fuseau horaire, ici EST. (Même qu'à New York.)
1222093305
Ou si vous souhaitez utiliser l'UTC. (De même que "GMT".)
1222093289
À l'aide de mktime:
strtotime()
Pour quelque raisonstrtotime()
ne fonctionne pas sur certaines dates, et est donc très peu fiable.À l'aide de la fonction strtotime() fonction que vous pouvez facilement convertir la date en timestamp
Plus d'infos: http://php.net/manual/en/function.strtotime.php
En ligne de l'outil de conversion: http://freeonlinetools24.com/
Voici une solution simple et efficace à l'aide de la
split
etmtime
fonctions:Il a travaillé comme un charme pour moi.
Étant donné que la fonction
strptime()
ne fonctionne pas pour Windows etstrtotime()
peut retourner des résultats inattendus, je recommande d'utiliserdate_parse_from_format()
:Si vous voulez savoir à coup sûr si une date se analysée dans quelque chose que vous attendez, vous pouvez utiliser
DateTime::createFromFormat()
:Il est évident que dans ce cas, mais par exemple
03-04-2008
pourrait être 3 avril ou le 4 Mars, selon d'où vous venez 🙂DateTime::createFromFormat
retournefalse
sur l'erreur, pasnull
.Si vous connaissez le format du
strptime
parce questrtotime
ne une hypothèse pour le format, qui peut ne pas toujours être correct. Depuisstrptime
n'est pas implémentée dans Windows il y a une fonction personnaliséeRappelez-vous que la propriété returnvalue
tm_year
est à partir de 1900! ettm_month
est de 0 à 11Exemple:
http://php.net/manual/en/function.date.php
Si vous le souhaitez, mettre dans un MySQL input type timestamp. Le ci-dessus fonctionne très bien (seulement en PHP 5 (ou version ultérieure):
Voici comment je ferais:
De cette façon, vous laissez la fonction de savoir ce que le format de date que vous utilisez et même spécifier le fuseau horaire.
Veuillez être prudent sur time/zone si vous le réglez à enregistrer les dates dans la base de données, que j'ai eu un problème quand j'ai comparé les dates de mysql qui ont été convertis à
timestamp
à l'aide destrtotime
. vous devez utiliser exactement même temps, de la zone avant la conversion de la date d'horodatage sinon, la fonction strtotime() utilisera par défaut le serveur de fuseau horaire.Veuillez voir cet exemple: https://3v4l.org/BRlmV
Utiliser la fonction PHP
strtotime()
date — Format d'une date/heure locale
Si vous êtes à la recherche pour convertir un format UTC datetime (
2016-02-14T12:24:48.321Z
) pour l'horodatage, voici comment vous pouvez le faire: