使用AngularJS格式化带时区的日期

3
使用angularjs 1.2.26,我无法将我的日期输入格式化为所需的时区。以下是一个示例:http://plnkr.co/edit/CxCqoR3Awcl1NFrCZYjx?p=preview
{{'2015-07-10T12:37:08Z' | date : "MMMM d, y 'at' h:mma Z" : 'America/Bahia'}}

并且

{{'2015-07-10T12:37:08Z' | date : "MMMM d, y 'at' h:mma Z" : 'Europe/Paris'}}

输出结果与我的浏览器本地时区相同,忽略我设置的时区。

2个回答

4

有两个问题:

  • 时区支持似乎是在1.2.26版本之后引入的。
  • 时区支持不接受任意TZDB ID。从v1.4.1文档中可以看到:

    要用于格式化的时区。它理解UTC/GMT和美国大陆时区缩写,但通常使用时区偏移量,例如'+0430'(格林威治子午线东4小时30分钟)。如果未指定,则使用浏览器的时区。

    v1.3.16中,它甚至更加受限制:

    要用于格式化的时区。目前只支持“UTC”。如果未指定,则使用浏览器的时区。

因此,如果您更改示例以使用:

<script data-require="angular.js@1.4.x" src="https://code.angularjs.org/1.4.2/angular.js" data-semver="1.4.2"></script>

然后:

<span>{{'2015-07-10T12:37:08' | date : "MMMM d, y 'at' h:mma Z" : 'PST'}}</span>
<br/>
<span>{{'2015-07-10T12:37:08' | date : "MMMM d, y 'at' h:mma Z" : 'EDT'}}</span>

例如,您将得到以下输出:
July 10, 2015 at 3:37AM -0800 
July 10, 2015 at 7:37AM -0400

谢谢Jon,我知道1.2.26没有时区过滤器功能,也许我表达不够清楚,但我需要一种以定义的时区格式化日期的方法。 - zfou
@Fourat:看起来AngularJS短时间内不太可能支持这个功能。也许你应该考虑一下moment.js? - Jon Skeet
@Jon Skeet:您还精通AngularJs并且能够帮助我们,这真是太棒了。 - Gul Ershad
2
@GulMdErshad:不,我完全不懂AngularJS。我只是在阅读文档... - Jon Skeet
@Jon Skeet:你在C#方面帮助了我们很多,特别感谢。你是我在软件开发方面的榜样。非常感谢。 - Gul Ershad

-1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接