0

在我的网站上,我们以以下格式存储所有时间和日期:

表格列:日期 - 16.01.2012 表格列:时间 - 06:36:50pm

这给居住在不同时区的人带来了问题,因此我们正在考虑将其更改为简单的 time() 字符串,但是因为我们网站上的很多内容已经有这样的 time(old,而不是 time() 字符串) 在数据库中,我们想保留该数据,因此想知道如何将这些字符串更改为 time()。

我了解如何更新数据库以及所有内容,我在将 16.01.201206:36:50pm 实际转换为其各自的 time() 字符串时迷失了方向,因为 strtotime 喜欢完美。

感谢您的宝贵时间,我期待您的建议。

4

3 回答 3

2

您是在问如何在数据库中进行转换,或者在将数据库加载到 PHP 中时如何转换数据库中的日期时间?

如果是后者,您可以通过多种方式设置日期格式。

取自 date_format 的 PHP 手册的注释:

    <?php

    $result = mysql_query("SELECT `datetime` FROM `table`");
    $row = mysql_fetch_row($result);
    $date = date_create($row[0]);

    echo date_format($date, 'Y-m-d H:i:s');
    #output: 2012-03-24 17:45:12

    echo date_format($date, 'd/m/Y H:i:s');
    #output: 24/03/2012 17:45:12

    echo date_format($date, 'd/m/y');
    #output: 24/03/12

    echo date_format($date, 'g:i A');
    #output: 5:45 PM

    echo date_format($date, 'G:ia');
    #output: 05:45pm

    echo date_format($date, 'g:ia \o\n l jS F Y');
    #output: 5:45pm on Saturday 24th March 2012

    ?>

这些只是一些例子。看看这个页面以获得更多想法。

根据评论编辑:

您可以使用DateTime::createFromFormat,它允许您指定要传入的日期时间的格式。

于 2012-05-08T01:51:15.377 回答
1

寻找mysql调用的函数str_to_date

假设您调用了 dbtable 文本字段date_str,其格式为 YYYYMMDD。您可以使用 ff 查询来输出正确的日期字段。

SELECT str_to_date(date_str, '%Y%m%D') as date_fld FROM dbtable ...

这是链接

于 2012-05-08T02:38:49.883 回答
0

我知道这有点晚了,但我也认为这应该通过数据库来完成。我认为这将删除一些额外的步骤,并且可能比诉诸 PHP 的日期格式功能快一点。您可以编写如下所示的 SQL 语句:

"SELECT UNIX_TIMESTAMP(TIMESTAMP(STR_TO_DATE(Date, '%d.%m.%Y'), STR_TO_DATE(Time, '%r'))) AS epoch FROM Table"

这应该以您正在寻找的正确 time() 格式返回所有内容。

于 2012-05-08T02:57:14.883 回答