use*_*100 9 html javascript datetime angularjs
我正在使用HTML5日期选择器.选择日期后,ng-model显示较旧的日期,而不是选择的当前日期.
<input type="date" ng-model="dateModel" />
Run Code Online (Sandbox Code Playgroud)
当我选择当前日期时,ng-model有2015-05-13T18:30:00.000Z而不是2015-05-14.如果我在jQuery中使用它,它将正确存储为2015-05-14
我该如何解决这个问题?
Plunker - AngularJS
Plunker - jQuery
这是您的Angular版本的正确日期,但日期格式为UTC,如果您不完全了解这一点,可能会出现错误.
时区始终为零UTC偏移,由后缀"Z"表示.
查看Angular 日期过滤器.开箱即用有很多选项,几乎可以获得您希望的任何格式 - 但最重要的是,已经解决了您的时区问题.例如...
{{dateModel | date:'shortDate'}} // -- prints 5/14/15
{{dateModel | date:'yyyy-MM-dd'}} // -- prints 2015-05-14
Run Code Online (Sandbox Code Playgroud)
更多关于明确提供timezone参数并信任浏览器以解决我们的时间的问题(Angular docs)
{{ date_expression | date : format : timezone }} // -- template binding
$filter('date')(date, format, timezone) // -- javascript
Run Code Online (Sandbox Code Playgroud)
用于格式化的时区.它理解UTC/GMT和美国大陆时区的缩写,但是对于一般用途,使用时区偏移,例如,'+ 0430'(格林威治子午线以东4小时30分钟)如果未指定,则为时区将使用浏览器.
如果您希望使用ngModelOptions显式定义时区而不是利用过滤器,则可以使用以下方法
<input type="date"
ng-model="dateModel"
ng-model-options="{timezone: timezone}" />
Run Code Online (Sandbox Code Playgroud)
var date = new Date()
$scope.timezone = ((date.getTimezoneOffset() / 60) * -100) // e.g. -400 EDT
Run Code Online (Sandbox Code Playgroud)
请参阅此答案,其中解释了手动计算背后的逻辑
Plunker Link - withng-model-options
| 归档时间: |
|
| 查看次数: |
8181 次 |
| 最近记录: |