Unix 时间转实时

发布于 2024-10-19 15:39:57 字数 273 浏览 2 评论 0 原文

不确定代码出了什么问题

$date = strtotime("%b %d, %Y", $datedata);
    $time = strtotime("%I:%M:%S %p", $datedata);

我从数据库获取的时间是1298747601,并且是

我在顶部的date_default_timezone_set('America/Los_Angeles');的 $datedata脚本。

Not sure whats up with the code

$date = strtotime("%b %d, %Y", $datedata);
    $time = strtotime("%I:%M:%S %p", $datedata);

The time i gets from the DB is 1298747601 and is the $datedata

I have date_default_timezone_set('America/Los_Angeles'); at the top of the script.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

但可醉心 2024-10-26 15:39:57

使用 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.

謌踐踏愛綪 2024-10-26 15:39:57

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 (from time()) if no timestamp is passed, like date("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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文