【问题标题】:PHP mktime noticePHP mktime 通知
【发布时间】:2014-06-03 16:06:35
【问题描述】:

我想将给定的日期和时间或仅将日期更改为 Unix 时间。

我试过这样:

mktime("Jan-12-2012 2:12pm");

但它不起作用:

即使是在 PHP 文档中,我也查看了许多示例,其中许多并不包含我想要的内容。

当我尝试时:

$user_birthday=$_POST["user_birthday"];
$db_user_birthday=empty($user_birthday)?"":mktime($user_birthday);

$_POST["user_birthday"] 的值来自 jan-12-2012 2:12pm 它显示如下错误:

注意:在 C:\Program 中遇到格式不正确的数值 第 76 行的文件 (x86)\Ampps\www\admin\index.php

如何修复它或在 Unix 中显示时间?

【问题讨论】:

标签: php date time


【解决方案1】:

使用这个:

date("M-d-Y h:i:s", strtotime($user_birthday));

【讨论】:

    【解决方案2】:

    您应该使用strtotime 而不是mktime

    将任何英文文本日期时间描述解析为 Unix 时间戳。

    所以你的代码是这样的:

    $user_birthday = $_POST["user_birthday"];
    $db_user_birthday = empty($user_birthday) ? "" : strtotime($user_birthday);
    

    然后您可以像这样处理该日期,以将其格式化为您想要的格式:

    echo date("M-d-Y h:ia", $db_user_birthday);
    

    所以你的完整代码是这样的:

    $user_birthday = $_POST["user_birthday"];
    $db_user_birthday = empty($user_birthday) ? "" : strtotime($user_birthday);
    echo date("M-d-Y h:ia", $db_user_birthday);
    

    注意,我还在关键点的代码中添加了空格。代码可以在没有空格的情况下工作,但为了便于阅读和格式化,您应该始终选择使用这样更简洁的代码。

    【讨论】:

    • 是的,谢谢。我介意回答我对斯蒂芬的评论吗?
    • @user3703850 我现在已将echo date("M-d-Y h:ia", $db_user_birthday); 添加到答案中。这将正确格式化strtotime 的输出,因此它是人类可读的。
    【解决方案3】:

    你应该看看这个答案:convert date to unixtime php

    基本上,您将 mktime() 与 strtotime() 混淆了。 strtotime() 允许您将英文文本字符串解析为 Unix 时间戳。 mktime() 基于整数参数构造一个 unix 日期时间。

    例如(再次取自上述问题)

    echo mktime(23, 24, 0, 11, 3, 2009);
    1257290640
    
    echo strtotime("2009-11-03 11:24:00PM"); 
    1257290640
    

    【讨论】:

    • 上帝我觉得很愚蠢...无论如何谢谢...有没有 strtotime 的格式,因为用户要设置值...我需要显示他们应该以这种格式输入,如果他们没有输入所需的格式向他们显示错误
    • @user3703850 您的问题在您提供的代码上下文中没有任何意义。
    • @user3703850 我知道你在说什么。捎带无休止的问题在这里并不受欢迎。因此,您可能想提高自己的声誉,这样您就可以提出真正的问题,而不是这样做。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-21
    • 1970-01-01
    • 2013-10-11
    相关资源
    最近更新 更多