【问题标题】:How to specify Local Date and Time in JavaScript如何在 JavaScript 中指定本地日期和时间
【发布时间】:2016-04-14 17:37:02
【问题描述】:

我有一个 Android 应用,我想在给定的日期和时间(全部为本地)显示通知。但是,如果我使用这样的 UTC 格式,我通过 json 从服务器获取:

2016-04-14T11:30:00Z

使用此功能,消息在全球同时显示:

var mTime = new Date( element.dateNtime );

我想要的是在当地时间上午 11:30 显示消息。就像英国的上午 11:30 一样,所有用户都会收到通知,但美国的用户会在 5 小时后收到通知,即当地时间 11:30(美国东部标准时间或其他时间)。

更新

我想我已经找到了解决方案,但从下面的答案看来,这个问题要么不太清楚,要么没有被理解。这是场景:

一个。用户在其手机上打开了我的 Cordova 应用程序 湾。应用程序在启动时从服务器读取字符串日期和消息,格式为“2016-04-14T11:30:00Z”。因此,使用 new Date() 函数获取当前日期是没有问题的。 C。基于此,应用程序使用 Cordova 的通知插件为给定的日期和时间设置通知。 d。到时候会弹出通知

解决方案是对日期使用 NON-ISO 格式,即“'Wed, 09 Aug 1995 00:00:00'” 以及 Date.parse() 函数。使用上面的示例代码将变为:

var mTime = Date.parse( element.dateNtime );

如果以这种格式提供日期('Wed, 09 Aug 1995 00:00:00'),变量 mTime 将包含完全相同的值。但是,如果日期时间以 ISO 格式 ( 2016-04-14T11:30:00Z ) 提供,则 mTime 将包含转换为用户区域设置的时间。

【问题讨论】:

    标签: javascript android datetime locale android-notifications


    【解决方案1】:

    如果您使用的是 PHP 服务器,您可以使用以下代码轻松实现:

    $serverdate = date("d m Y");
    $indiantime = date('d/m/Y h:i:s A', time()+19800);
    

    这里变量'serverdate'返回服务器的当前日期,变量'indian time'存储时间为印度标准时间

    要将时间转换为适当的区域,请使用此公式 x * 60 * 60
    其中“x”是格林威治标准时间的差异,对于印度,它是 5.30
    所以 5.5 * 60 * 60 = 19800

    【讨论】:

      【解决方案2】:

      只需实例化一个新的 Date 对象

      var now = new Date();
      

      这将使用客户端的本地时间创建一个新的 Date 对象。要显示 8:30 AM,请使用

      var time = new Date().toString("hh:mm tt");
      

      您可以使用new Date().getTimezoneOffset()/60 作为时区。还有一个toLocaleString() 方法用于使用用户的语言环境显示日期。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-12-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-29
        相关资源
        最近更新 更多