javascript - 如何使用时刻2.0.0设置时区

标签 javascript angularjs datepicker angular-material

我正在修复使用 moment.js 2.0.0 和 Angular Material 的 angularjs 应用程序的错误。

当我将日期设置为日期选择器时,日期始终设置为比正确日期晚一天(例如,如果我设置 23/11,则传递到服务器的字符串为 22/11)。

我发现这个问题在 stackoverflow 上已经遇到了很多时间,例如这里 https://stackoverflow.com/a/9509425/1948785

这似乎是一个时区问题,因为我的网络应用程序使用的是 moment.js 2.0.0,所以我需要知道如何使用此类版本设置时区。

探索 moment.js 我找不到 moment.tz 方法。

这是我的 div:

<md-input-container class="col-xs-6 col-md-3">
    <label>Opening date</label>
    <md-datepicker ng-disabled="..." name="Openingdate" ng-model="dealer.openingDate"  aria-label="Opening date" ng-model-options="{ timezone: 'utc' }">
        Opening date
        <div ng-messages="..." ng-show="...">
            <div ng-message="required">...</div>
        </div>
    </md-datepicker>
</md-input-container>

openingDate 由日期选择器设置,然后通过以下方式发送:

if(!dealer) {
    throw new Error('Invalid parameters.');
}
config_post.url = actions.create_dealer;
config_post.data = {};
config_post.data['dealer'] = dealer;

return $http(config_post);

如果我在调用这篇文章之前通过 chrome 开发工具进行调试,则日期已经错误(-1 天)

最佳答案

原因可能是日期选择器允许用户使用浏览器的本地时间选择日期,然后以 UTC 形式发送该日期。根据浏览器的时区和当前时间,可能会显示好像正在发送不同的日期。

我假设您正在使用 material date picker 。您可以指定从浏览器假定 UTC,然后将日期发送到服务器不会执行从区域设置到 UTC 的任何转换。这可以使用ng-model-options来完成。

ng-model-options="{timezone: 'utc'}"

关于javascript - 如何使用时刻2.0.0设置时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49405821/

相关文章:

swift - 日期格式器 swift 3

javascript - 成功功能无法基于提交工作

基于 Referrer 的 JavaScript 重定向?

javascript - ng-repeat 中的单选按钮

javascript - Angular js http get 返回所有页面

angularjs - 如何在 Angular.js 中比较时间?

jquery - react 日期选择器: Highlight current month's days

javascript - Google map Javascript API 在 Ionic 2 中工作吗?

javascript - 在 Angularjs 中的 ng-keypress 上获取文本框的值

javascript - uib-datepicker-popup 不显示日历