【问题标题】:How to format datetime stamp with Javascript and PHP如何使用 Javascript 和 PHP 格式化日期时间戳
【发布时间】:2023-03-08 19:15:01
【问题描述】:

主要问题:我以日期时间格式收集初始参数,并使用php date 函数将其转换为可读格式。从这种格式,我需要使用 javascript 将日期转换回相同的日期时间参数。

我尝试了javascript中的getTime()函数来获取日期时间参数转换。

<?php
    $_REQUEST['date'] = 1500786000;
    $date=date('Y-m-d', $_REQUEST['date']);
    echo "<span id='date'>$date</span>";
?>
<script>
    var pdate=new Date('#date').val().replace(/-/,'\/'));
    console.log(pdate.getTime());
</script>

原始日期时间参数以 1500786000 开头,通过 PHP 格式化为 2017-02-23。 javascript 转换为 1500786000000,与预期格式相差三个 0。

我不希望使用替代库,因此可以在本机 javascript 中使用的任何内容都是最有帮助的。

【问题讨论】:

  • PHP 值有一个 Unix 时间戳,测量自 1970 年 1 月 1 日午夜以来的秒数。JS 版本类似,但以毫秒为单位 - 所以它大 1000 倍(你的 3 个额外的 0注意到)。为什么很难根据需要乘/除以 1000?
  • @RobinZigmond:您能否创建一个答案,而不是评论,以便提出此问题的人可以接受它作为正确答案.. 看来您的答案确实是正确的答案。谢谢

标签: javascript php


【解决方案1】:

如果您按照相同的步骤进行操作,则符合预期。您只需将该值除以 1000 即可得到您期望的值。

原始日期时间参数以 1500786000 开头,因为它以 为单位。

在 JavaScript 中,它将返回自 1970/01/01 以来的毫秒数。

var seconds = new Date().getTime() / 1000; // if you want it to be seconds

【讨论】:

  • @cr05s19xx 建议“您现在也可以使用静态方法,即 var seconds = Date.now() / 1000;”
【解决方案2】:

为什么不在该范围内设置两个值并使用如下:

<?php
    $_REQUEST['date']=1500786000;
    $date=date('Y-m-d', $_REQUEST['date']);
    echo "<span id='date' data-date='".$_REQUEST['date']."'>$date</span>";
?>
<script>
    var visibleDate= $('#date').val(); //You actual visible date
    var rawDate= $('#date').data('date'); //You raw date
</script>

您无需再次在 JS 中进行转换。希望对你有帮助。

【讨论】:

    猜你喜欢
    • 2018-06-15
    • 2016-02-13
    • 2016-03-25
    • 1970-01-01
    • 1970-01-01
    • 2019-02-26
    • 2014-10-15
    • 2018-05-20
    • 2017-06-08
    相关资源
    最近更新 更多