【问题标题】:PHP JS Transform date to user timezonePHP JS将日期转换为用户时区
【发布时间】:2012-10-26 14:24:15
【问题描述】:

我有一个页面显示未来事件以及日期(服务器时间)。 我需要一些方法来以用户时间显示日期。

示例:
10 月 26 日 13:48:23(服务器)
10 月 26 日 14:48:23(用户时间 (UTC +1))-> 活动信息

到目前为止我所拥有的:

<?php
    $sql=mysql_query("SELECT * FROM table") or die("Come back later");
    while($row=mysql_fetch_array($sql)) {
        echo date('M, d H:i:s', strtotime ($row['date'])).' -> '.$row['info'];
    }
?>

我想检测用户时区的差异。

谢谢。

编辑 我知道我不应该使用 mysql_*

【问题讨论】:

标签: php javascript


【解决方案1】:

如果您可以在 JavaScript 中转换为用户的时区,您可以执行以下操作:

PHP

<?php
    $sql=mysql_query("SELECT * FROM table") or die("Come back later");
    while($row=mysql_fetch_array($sql)) {
        echo '<span class="date">' . date('M, d H:i:s', strtotime ($row['date'])) . ' UTC</span> -> '.$row['info'];
    }
?>

JavaScript(使用 jQuery 提高可读性)

$(function(){
    $('.date').each(function(){
        var $this = $(this);

        // Parse the date string (the format you've given will 
        // work, and the added UTC above will give JavaScript 
        // some context)
        var dateVal = new Date($this.text());

        // JavaScript will convert it to the user's timezone when 
        // stringifying it (helped by the server timezone specified
        // in the PHP.
        $this.text(dateVal.toString()); 
    });
});

如果您想以Oct, 26 13:48:23 的格式呈现日期,您可以这样做:

var dateString = dateVal.toLocaleString();
var parts = /^\w+ (\w+ \d{1,2}) \d{4} (\d{2}:\d{2}:\d{2})/.exec(dateString);
dateString = parts[1] + ' ' + parts[2];

然后使用$this.text(dateString);将其注入到dom中。

【讨论】:

  • 谢谢,但是我如何格式化日期,因为我用 PHP 输出它是这样的:Oct, 26 13:48:26
  • 我编辑了这篇文章,向您展示如何获得您询问的价值 :)
【解决方案2】:

您需要从该日期创建DateTime 对象,然后将DateTimeZone 应用于该对象。

【讨论】:

    【解决方案3】:

    您需要从用户那里获取时区。

    您可以通过提供用户可以选择和提交的时区下拉菜单来完成此操作。为了使这更加用户友好,您可以使用一些 geoip 功能来检测国家和地区,然后确定用户的默认时区。请务必通过 IP 保留我的那个位置并不是 100% 准确的,而是对用户可能位于何处的有根据的猜测。

    或者,您可以使用 ajax 将时区发送到服务器,然后进行相应更新。

    【讨论】:

    • 或者,您可以使用 ajax 将时区发送到服务器,然后进行相应更新。 我该怎么做?
    猜你喜欢
    • 2020-09-08
    • 2021-07-03
    • 2017-02-08
    • 2013-10-21
    • 1970-01-01
    • 2015-11-27
    • 2013-08-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多