【问题标题】:MomentJs/Angular Date filter not working in IEMomentJs/Angular 日期过滤器在 IE 中不起作用
【发布时间】:2017-05-16 15:39:23
【问题描述】:

我的日期格式为“2017-05-16T13:22:01.207Z”并尝试转换为“05/16/17 08:22 AM”。我已经尝试了以下方法,但它们都没有在 IE 中为我工作,在 chrome 中工作正常。任何想法是什么原因。有没有人遇到过这种情况。

Date = '2017-05-16T13:22:01.207Z';

MomentJs Solution:

$moment(Date).format('MM-DD-YY HH:mm A').replace(/-/g,"/")

AngularJs Date Filter:

{{Date | date: 'short'}}

预期结果:我在 chrome 中看到了这个,但在 IE 中没有看到

 05-16-17 13:22 PM

【问题讨论】:

  • 无法重现您的问题,您能提供小提琴或 sn-p 吗?哪个 IE 版本会给您带来问题?原生 angularjs 日期过滤器对我有用,在这种情况下无需使用任何时刻或替换。 (顺便说一句,我不是反对者)
  • 我刚刚发现了问题,问题出在模板中,它基于 ng-if 应用此过滤器,由于 ng- 中的条件,此特定过滤器从未应用于 IE如果。不过感谢您的宝贵时间。

标签: angularjs momentjs


【解决方案1】:

呵呵,替换可能是我见过有人处理format() 函数的最有趣的方式,它已经按照自己的意愿格式化了日期。

使用

var date = '2017-05-16T13:22:01.207Z';
alert(moment(date).format('MM/DD/YY HH:mm A'))
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment-with-locales.min.js"></script>

还要注意!!!

Date 已经在 js 中定义(它是全局的 Date 对象);所以你最好为你的变量使用一些不同的名字——比如听起来相似的date;但使用小写的 D/d。 (这可能是您的错误的来源)

【讨论】:

  • 你说得对,我没有太在意那些格式化的东西。我在一些 plunkr 中尝试过,但没有成功,可能是我没有意识到的一些错字。
猜你喜欢
  • 2013-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-01
  • 2015-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多