javascript – 角度的日期问题

前端之家收集整理的这篇文章主要介绍了javascript – 角度的日期问题前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用 HTML5日期选择器.
选择日期后,ng-model显示较旧的日期,而不是选择的当前日期.
<input type="date" ng-model="dateModel" />

当我选择当前日期时,ng-model有2015-05-13T18:30:00.000Z而不是2015-05-14.
如果我在jQuery中使用它可以正确存储为2015-05-14

我该如何解决这个问题?

Plunker – AngularJS

Plunker – jQuery

解决方法

这是您的Angular版本的正确日期,但日期格式为UTC,如果您不完全了解这一点,可能会出现错误.

The timezone is always zero UTC offset,as denoted by the suffix “Z”.

UTC Source

查看Angular date filters.开箱即用有很多选项,几乎可以获得任何您想要的格式 – 但最重要的是,已经解决了您的时区问题.例如…

{{dateModel | date:'shortDate'}}  // -- prints 5/14/15
{{dateModel | date:'yyyy-MM-dd'}} // -- prints 2015-05-14

Plunker Link

更多关于明确提供时区参数并信任浏览器来解决我们的时间(Angular docs)

{{ date_expression | date : format : timezone }}  // -- template binding
$filter('date')(date,format,timezone)           // -- javascript

Timezone to be used for formatting. It understands UTC/GMT and the
continental US time zone abbreviations,but for general use,use a
time zone offset,for example,‘+0430’ (4 hours,30 minutes east of
the Greenwich meridian) If not specified,the timezone of the browser
will be used.

如果您希望使用ngModelOptions明确定义时区而不是利用过滤器,则可以使用以下方法执行此操作

<input type="date" 
    ng-model="dateModel" 
    ng-model-options="{timezone: timezone}" />
var date = new Date()
$scope.timezone = ((date.getTimezoneOffset() / 60) * -100) // e.g. -400 EDT

this answer,它解释了手动计算背后的逻辑

Plunker Link – 使用ng-model-options

猜你在找的JavaScript相关文章