Unix 时间转实时
不确定代码出了什么问题
$date = strtotime("%b %d, %Y", $datedata);
$time = strtotime("%I:%M:%S %p", $datedata);
我从数据库获取的时间是1298747601
,并且是
我在顶部的date_default_timezone_set('America/Los_Angeles');
的 $datedata脚本。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
使用 strftime() 或 date(),而不是 strtotime()。 Strtotime 旨在格式化文本日期,而不是时间戳。
最好在数据库中使用 DATETIME 数据类型,而不是包含时间戳的 int。使用 DATETIME 意味着更容易计算日期,并且您可以直接在查询中格式化日期。
Use strftime() or date(), not strtotime(). Strtotime is meant to format textual dates, not timestamps.
It's better to use the DATETIME datatype in your database instead of an int containing a timestamp. Using a DATETIME means easier calculating with dates and you can format the date directly in your query.
strtotime() 用于将字符串转换为时间,例如
$timestamp = strtotime("1:33 PM EST Next Friday");
。您需要
date()
,它采用格式字符串和时间戳来创建格式化的日期时间字符串,如果没有时间戳,则使用当前时间(来自time()
)被传递,如date("h:i:s AT, M jS, Y", $timestamp)
,它将输出类似“1:33:00 PM EST, March 4th, 2011”的内容。另请注意,如果您想要使用格式中的单词,例如“1 月 23 日”,并且单词中的字母也是日期格式字符,在这种情况下,“of”中的“o”是 ISO-8601 年份数字格式选项,您必须使用 \ 斜杠将其转义,如"jS \of F"
。由于 f 不是格式化选项,因此不需要转义,但如果需要转义,那么它将是"\o\f"
还有一个内置于较新 PHP 中的 DateTime 对象您可以查看的版本。
我不同意 Ray 的观点,即在 SQL 中存储 DateTime 数据类型比整数时间戳更好。他们差不多。您仍然可以通过查找大于 X 时间戳且小于 Y 时间戳的数字来搜索数据库中的日期范围,而且,从数据库中获取的所有内容都已经采用 PHP 可以轻松使用的时间戳格式无需将其转换为正确的时间戳。
strtotime() is for converting a string to a time like,
$timestamp = strtotime("1:33 PM EST Next Friday");
.You want
date()
, which takes a format string and a timestamp to create a formatted date time string, and uses the current time (fromtime()
) if no timestamp is passed, likedate("h:i:s A T, M jS, Y", $timestamp)
which would output something like "1:33:00 PM EST, March 4th, 2011". Also, note that if you want to do words in the format, like "23rd of January", and the letters in the words are also date formatting characters, in this case the 'o' in 'of' is the ISO-8601 year number formatting option, you must escape it with a \ slash like"jS \of F"
. As the f is not a formatting option, it does not need to be escaped, but if it did, then it would be"\o\f"
There's also a DateTime object that's built into more recent PHP versions that you can look into.
I disagree with Ray that it is better to store a DateTime datatype in SQL rather than an integer timestamp. They're about the same. You can still search for date ranges in the DB simply by finding numbers greater than X timestamp and less than Y timestamp, and, as a plus, everything that you get from the DB is already in a timestamp format that can be used easily by PHP without having to convert it to a proper timestamp.