将日期转换为Unix时间戳的PHP代码

15

我有一个表单,其中包含日期信息:月份、日期、年份、小时、分钟和上午/下午。如何使用 PHP 编码/解码成 Unix 时间戳,反之亦然?


如果我用你的标题在 SO 上搜索,前七个左右的结果都包含了你所选择的相同答案。 - Mike B
2个回答

38

mktime() - 获取日期的Unix时间戳

echo mktime(23, 24, 0, 11, 3, 2009);
1257290640

如果要处理AM/PM,请在PM时将小时数加12。

mktime($isAM ? $hrs : ($hrs + 12), $mins, $secs, $m, $d, $y);

或者你可以使用strtotime()函数:

strtotime()函数 - 将几乎任何英语文本日期时间描述解析为 Unix 时间戳。

echo strtotime("2009-11-03 11:24:00PM"); 
1257290640

使用strtotime()函数可以使代码更简洁。 - risnandar
1
使用strtotime时不要忘记...在m/d/y或d-m-y格式中,通过查看各个组件之间的分隔符来消除歧义... - Eugene van der Merwe
处理AM/PM时间格式,如果是PM,则小时数加12。这很棘手,因为当小时数为12时会产生错误。根据您的说法,10PM = (10 + 12) 是正确的,但12PM = (12 + 12) 是错误的。您的说法适用于除12之外的所有小时数。在所有逻辑中,12 PM 应该是0 AM,而12 AM 应该是0 PM。或者说,10个苹果和12个苹果之间的差距是2个,10个香蕉和12个香蕉之间的差距也是2个,而10PM和12PM之间的差距是14。 - Kobbe

3

我该如何处理上午或下午? - mrpatg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接