【问题标题】:what is the best method to translate strings to mysql dates?将字符串转换为 mysql 日期的最佳方法是什么?
【发布时间】:2009-08-04 19:56:00
【问题描述】:

在 php 中获取以下字符串 mm[some char]dd[some char]yyyy 并将其转换为 yyyymmdd 的最佳方法是什么? 我将来可能会想要,根据本地对 dd[some char]mm[some char]yyyy 做同样的事情。
如果有已经使用 Zend Framework API 的方法,那就更好了

【问题讨论】:

    标签: php mysql zend-framework date


    【解决方案1】:
    <?php
    $str = '08-24-1989'; // can be in any recognizable date format.    
    $new_str = date('Ymd', strtotime($str)); // produces "20090824".
    ?>
    

    您可以将上面第二条语句中的Ymd 替换为找到here 的任何日期格式字符。

    如果您希望使用 Zend 的 Zend_Date 框架,请查看一些示例和文档 here。坦率地说,PHP 函数在您的情况下更简单易用。

    【讨论】:

    • 注意,当月份小于12,即日月顺序不明显时,这些函数会产生错误的结果。请小心并检查几个日期:)
    • 我发现最好始终使用 Y-m-d 格式。这似乎总是正确的。
    • 我同意年、月、日(小时、分钟、秒 - Y-m-d H:i:s 格式)。 排序和比较更容易。
    【解决方案2】:

    date('Ymd', strtotime($time));

    Strtotime 绝对是将几乎任何时间格式转换为标准格式的最佳工具,然后您可以使用Date 将其转换为您想要的格式。

    因为你的问题标题是 MySQL Dates,这是 mysql 使用的字符串格式。

    date('Y-m-d h:i:s', strtotime($time));

    【讨论】:

      【解决方案3】:

      除非 [some char] 变化,否则使用 mysql str_to_date 函数,例如STR_TO_DATE('12|23|2009','%m|%d|%Y');

      【讨论】:

        【解决方案4】:

        我绝对会使用 TIMESTAMP 来存储任何日期。处理时差非常容易(例如 SELECT ... WHERE date BETWEEN 2138728753 AND 376251237),并且可以很容易地转换为任何语言环境:)

        【讨论】:

        • 我通常同意你。除了这个特定的日期是出生日期。除了改变数字的顺序之外,不需要任何操作。
        • 啊,我明白了...是的,那么最好使用 strtotime & date ;)
        • 嗯,不... :) 我认为如果您的目标是轻松本地化,时间戳仍然会更好。例如,一些东方国家不使用公历(@see en.wikipedia.org/wiki/Calendar#Currently_used_calendars)。您仍然需要将日期转换为“机器可读格式”(Y-m-d 左右),然后将其转换为所需的日历...
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-03-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-11
        • 2013-06-23
        • 1970-01-01
        相关资源
        最近更新 更多