【问题标题】:Making AngularUI UI-Date datepicker use UTC time使 AngularUI UI-Date 日期选择器使用 UTC 时间
【发布时间】:2014-08-06 23:33:46
【问题描述】:

日期选择器似乎使用本地化时间,但当我调用后端时,我需要它使用 UTC 时间。我通过在使用以下函数将其发布到服务器之前调整值来解决此问题:

function adjustDateForTimeOffset(dateToAdjust) {
    var offsetMs = dateToAdjust.getTimezoneOffset() * 60000;
    return new Date(dateToAdjust.getTime() - offsetMs);
}

或者只是在服务中争论我的约会对象。但是,我也有一些我想在我的应用程序加载时使用的默认值,我需要这些日期采用 UTC 并显示在 datepicker 输入框中。但是,当我这样做时,输入框中的日期始终是前一天,因为 ui-date 使用本地时间。

有没有办法修改 ui-date 以始终在 UTC 时间而不是本地时间运行?

我在互联网上搜索了这个问题的答案,但一直在寻找修改 date-ui 的方法,但只是在将日期发送到服务器之前一直在寻找更改日期的方法,但这并不能解决我的问题.

【问题讨论】:

    标签: javascript angularjs datepicker angularjs-directive angular-ui


    【解决方案1】:

    javascript 的日期对象始终使用本地时区。

    创建日期对象后,无论输入日期如何,都会使用本地时区偏移量显示。

    您没有说明如何将日期发送到服务器,但我假设您只是发送日期字符串?

    在这种情况下,您可以使用 Date.prototype.toISOString() 方法,因为这将为您提供 ISO 标准日期字符串,这意味着它是 UTC。

    // this lets you convert a specific UTC date into a standard local date
    var date = new Date(Date.UTC(......));
    
    // send to server
    $http.post('url', { date: date.toISOString() });
    

    更多信息,请参阅:
    http://www.w3schools.com/jsref/jsref_toisostring.asp

    http://www.w3schools.com/jsref/jsref_utc.asp

    【讨论】:

    • 是的,我已经使用 toISOString 进行了工作......但问题是,当我有 UTC 时间的默认值并且需要填写本地时间的日期选择器的输入框时。跨度>
    • 另一个选项是创建您的日期,就好像当地时间是 UTC。所以你做new Date(1970,0,1,0,0,0).addSeconds(timestamp)
    猜你喜欢
    • 2015-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-10
    • 1970-01-01
    相关资源
    最近更新 更多