当前位置:  开发笔记 > 编程语言 > 正文

如何在PHP中将日期转换为时间戳?

如何解决《如何在PHP中将日期转换为时间戳?》经验,为你挑选了13个好方法。

我如何从中获取时间戳22-09-2008



1> Owen..:

PHP strtotime()给出了

$timestamp = strtotime('22-09-2008');

哪个适用于支持日期和时间格式文档.


你怎么没有得到这个答案的功劳呢?!
在阅读daremon的答案之前不要使用此解决方案
一个完全有效的答案,但我很惊讶Armin Ronacher的答案在赞成中没有与之相匹配 - 模棱两可总是很糟糕.
但为什么不"26/12/2012 01:05:41"工作?
优雅.我忘了那个!

2> Armin Ronach..:

还有一种strptime()预期只有一种格式:

$a = strptime('22-09-2008', '%d-%m-%Y');
$timestamp = mktime(0, 0, 0, $a['tm_mon']+1, $a['tm_mday'], $a['tm_year']+1900);


当心,Windows上没有strptime功能.
那些在Windows和PHP 5.3.0+上,考虑使用`date_parse_from_format`而不是`strptime`.
它应该是tm_mon而不是tm_month和tm_mday而不是tm_day
这个解决方案比顶上的那个好:)谢谢

3> Gordon..:

使用DateTimeAPI:

$dateTime = new DateTime('2008-09-22'); 
echo $dateTime->format('U'); 

// or 

$date = new DateTime('2008-09-22');
echo $date->getTimestamp();

与过程API相同:

$date = date_create('2008-09-22');
echo date_format($date, 'U');

// or

$date = date_create('2008-09-22');
echo date_timestamp_get($date);

如果由于您使用的格式不受支持而导致上述操作失败,则可以使用

$date = DateTime::createFromFormat('!d-m-Y', '22-09-2008');
echo $dateTime->format('U'); 

// or

$date = date_parse_from_format('!d-m-Y', '22-09-2008');
echo date_format($date, 'U');

请注意,如果未设置!,则时间部分将设置为当前时间,这与前四个时间不同,后者将在省略时间时使用午夜.

另一种方法是使用IntlDateFormatterAPI:

$formatter = new IntlDateFormatter(
    'en_US',
    IntlDateFormatter::FULL,
    IntlDateFormatter::FULL,
    'GMT',
    IntlDateFormatter::GREGORIAN,
    'dd-MM-yyyy'
);
echo $formatter->parse('22-09-2008');

除非您使用本地化日期字符串,否则更容易的选择可能是DateTime.


我现在推荐这个.

4> daremon..:

小心这样的功能strtotime()试图"猜测"你的意思(它当然没有猜测,规则在这里).

确实22-09-2008会被解析为2008年9月22日,因为这是唯一合理的事情.

怎么08-09-2008解析?可能是2008年8月9日.

怎么样2008-09-50?某些版本的PHP将其解析为2008年10月20日.

因此,如果您确定您的输入是DD-MM-YYYY格式化的,那么最好使用@Armin Ronacher提供的解决方案.


注意:在大多数非英语国家,格式为"dd-mm-yyyy",而不是"mm-dd-yyyy".
有效关注.我猜strtotime()依赖于你的语言环境.

5> Prof. Falken..:


如果你有PHP 5.3或以上,

这种方法适用于这两个 Windows和Unix 时区意识到,这可能是你想要什么,如果你是严重的使用日期.

如果您不关心时区,或者想要使用服务器使用的时区:

$d = DateTime::createFromFormat('d-m-Y', '22-09-2008');
echo $d->getTimestamp();

1222093324 (这将根据您的服务器时区而有所不同......)


如果要指定在哪个时区,这里是EST.(与纽约相同.)

$d = DateTime::createFromFormat('d-m-Y', '22-09-2008', new DateTimeZone('EST'));
echo $d->getTimestamp();

1222093305


或者如果您想使用UTC.(与"GMT"相同.)

$d = DateTime::createFromFormat('d-m-Y', '22-09-2008', new DateTimeZone('UTC'));
echo $d->getTimestamp();

1222093289




6> Till..:

使用mktime:

list($day, $month, $year) = explode('-', '22-09-2008');
echo mktime(0, 0, 0, $month, $day, $year);



7> 小智..:

使用strtotime()函数可以轻松地将日期转换为时间戳

 

更多信息:http://php.net/manual/en/function.strtotime.php

在线转换工具:http://freeonlinetools24.com/



8> 小智..:

这是一个使用splitmtime函数的非常简单有效的解决方案:

$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);

它对我来说就像一个魅力.



9> Victor..:

鉴于该功能strptime()不适用于Windows并且strtotime()可以返回意外结果,我建议使用date_parse_from_format():

$date = date_parse_from_format('d-m-Y', '22-09-2008');
$timestamp = mktime(0, 0, 0, $date['month'], $date['day'], $date['year']);


注意:使用strtotime():分隔符是斜杠(/),然后假设为美国m/d/y; 而如果分隔符是破折号( - )或点(.),则假定为欧洲dmy格式.所以我认为不需要使用strptime()

10> Ja͢ck..:

如果您想确定日期是否被解析为您期望的内容,您可以使用DateTime::createFromFormat():

$d = DateTime::createFromFormat('d-m-Y', '22-09-2008');
if ($d === false) {
    die("Woah, that date doesn't look right!");
}
echo $d->format('Y-m-d'), PHP_EOL;
// prints 2008-09-22

在这种情况下显而易见,但例如03-04-2008可能是4月3日或3月4日,具体取决于你来自哪里:)



11> 小智..:

如果你知道格式使用,strptime因为strtotime猜测格式,这可能并不总是正确的.由于strptime未在Windows中实现,因此存在自定义功能

http://nl3.php.net/manual/en/function.strptime.php#86572

请记住,返回值tm_year是从1900年开始!并且tm_month是0-11

例:

$a = strptime('22-09-2008', '%d-%m-%Y');
$timestamp = mktime(0, 0, 0, $a['tm_mon']+1, $a['tm_mday'], $a['tm_year']+1900)



12> 小智..:

http://php.net/manual/en/function.date.php



13> Praveen Srin..:
$time = '22-09-2008';
echo strtotime($time);

推荐阅读
虎仔球妈_459
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有