Comment puis-je obtenir l'horodatage par exemple 22-09-2008
?
Cette méthode fonctionne à la fois sur Windows et Unix et est sensible au fuseau horaire , ce qui est probablement ce que vous voulez si vous travaillez avec des dates .
Si vous ne vous souciez pas du fuseau horaire ou si vous souhaitez utiliser le fuseau horaire utilisé par votre serveur:
$d = DateTime::createFromFormat('d-m-Y H:i:s', '22-09-2008 00:00:00');
if ($d === false) {
die("Incorrect date string");
} else {
echo $d->getTimestamp();
}
1222093324 (cela varie en fonction du fuseau horaire de votre serveur ...)
Si vous souhaitez spécifier dans quel fuseau horaire, ici EST. (Identique à New York.)
$d = DateTime::createFromFormat(
'd-m-Y H:i:s',
'22-09-2008 00:00:00',
new DateTimeZone('EST')
);
if ($d === false) {
die("Incorrect date string");
} else {
echo $d->getTimestamp();
}
1222093305
Ou si vous souhaitez utiliser UTC . (Identique à " GMT ".)
$d = DateTime::createFromFormat(
'd-m-Y H:i:s',
'22-09-2008 00:00:00',
new DateTimeZone('UTC')
);
if ($d === false) {
die("Incorrect date string");
} else {
echo $d->getTimestamp();
}
1222093289
Quoi qu'il en soit, c'est toujours un bon point de départ pour être strict lors de l'analyse des chaînes en données structurées. Il peut sauver un débogage gênant à l'avenir. Par conséquent, je recommande de toujours spécifier le format de date.
Il existe également strptime () qui attend exactement un format:
la source
date_parse_from_format
place destrptime
.strptime
n'est pas implémenté sur les plateformes Windows.Avec l'
DateTime
API :La même chose avec l'API procédurale:
Si ce qui précède échoue parce que vous utilisez un format non pris en charge , vous pouvez utiliser
Notez que si vous ne définissez pas le
!
, la partie heure sera définie sur l'heure actuelle, qui est différente des quatre premières qui utiliseront minuit lorsque vous omettez l'heure.Encore une autre alternative consiste à utiliser l'
IntlDateFormatter
API:Sauf si vous travaillez avec des chaînes de date localisées, le choix le plus simple est probablement DateTime.
la source
!
horodatage basé sur Ma date changeait à chaque rafraîchissement et me rendait fou - parce que DateTime ajoutait utilement l'heure actuelle sans demander ni être informé. Grrr.Soyez prudent avec des fonctions comme
strtotime()
celle-ci, essayez de "deviner" ce que vous voulez dire (cela ne devine pas bien sûr, les règles sont là ).En effet
22-09-2008
sera analysé au 22 septembre 2008 , car c'est la seule chose raisonnable.Comment sera
08-09-2008
analysé? Probablement le 09 août 2008 .Et alors
2008-09-50
? Certaines versions de PHP analysent cela au 20 octobre 2008 .Donc, si vous êtes sûr que votre entrée est au
DD-MM-YYYY
format, il est préférable d'utiliser la solution proposée par @Armin Ronacher .la source
dd-mm-yyyy
pasmm-dd-yyyy
.YYYY-mm-dd
La conversion ne s'affiche que pour les utilisateursCette méthode fonctionne à la fois sur Windows et Unix et est sensible au fuseau horaire , ce qui est probablement ce que vous voulez si vous travaillez avec des dates .
Si vous ne vous souciez pas du fuseau horaire ou si vous souhaitez utiliser le fuseau horaire utilisé par votre serveur:
1222093324 (cela varie en fonction du fuseau horaire de votre serveur ...)
Si vous souhaitez spécifier dans quel fuseau horaire, ici EST. (Identique à New York.)
1222093305
Ou si vous souhaitez utiliser UTC . (Identique à " GMT ".)
1222093289
Quoi qu'il en soit, c'est toujours un bon point de départ pour être strict lors de l'analyse des chaînes en données structurées. Il peut sauver un débogage gênant à l'avenir. Par conséquent, je recommande de toujours spécifier le format de date.
la source
Utilisation de mktime :
la source
strtotime()
pour une raison quelconque,strtotime()
cela ne fonctionne pas à certaines dates et est donc très peu fiable.En utilisant la fonction strtotime (), vous pouvez facilement convertir la date en horodatage
Plus d'informations: http://php.net/manual/en/function.strtotime.php
Outil de conversion en ligne: http://freeonlinetools24.com/
la source
Voici une solution très simple et efficace utilisant les fonctions
split
etmtime
:Cela a fonctionné comme un charme pour moi.
la source
Étant donné que la fonction
strptime()
ne fonctionne pas pour Windows etstrtotime()
peut renvoyer des résultats inattendus, je recommande d'utiliserdate_parse_from_format()
:la source
Si vous voulez savoir avec certitude si une date est analysée dans quelque chose que vous attendez, vous pouvez utiliser
DateTime::createFromFormat()
:C'est évident dans ce cas, mais par exemple
03-04-2008
pourrait être le 3 avril ou le 4 mars selon d'où vous venez :)la source
DateTime::createFromFormat
renvoiefalse
sur erreur , nonnull
.Si vous connaissez le format, utilisez
strptime
parce qu'ilstrtotime
fait une supposition pour le format, ce qui n'est pas toujours correct. Puisqu'ilstrptime
n'est pas implémenté dans Windows, il existe une fonction personnaliséeN'oubliez pas que la valeur de retour
tm_year
est de 1900! ettm_month
est 0-11Exemple:
la source
http://php.net/manual/en/function.date.php
la source
la source
Utiliser la fonction PHP
strtotime()
date - Formater une heure / date locale
la source
la source
Si vous le souhaitez, placez-le dans un horodatage de type d'entrée MySQL . Ce qui précède fonctionne très bien (uniquement en PHP 5 ou version ultérieure):
la source
Voici comment je le ferais:
De cette façon, vous indiquez à la fonction le format de date que vous utilisez et spécifiez même le fuseau horaire.
la source
Veuillez faire attention au fuseau horaire si vous le définissez pour enregistrer les dates dans la base de données, car j'ai eu un problème lorsque j'ai comparé les dates de mysql converties en
timestamp
utilisantstrtotime
. vous devez utiliser exactement la même heure / zone avant de convertir la date en horodatage sinon strtotime () utilisera le fuseau horaire du serveur par défaut.Veuillez voir cet exemple: https://3v4l.org/BRlmV
la source
Si vous cherchez à convertir un datetime UTC (
2016-02-14T12:24:48.321Z
) en horodatage, voici comment procéder:la source