我正在使用angular:
从UTC转换为本地时间{{item.created | date:"medium": 'UTC'}}
当小时在中午之后,过滤器显示AM而不是PM,反之亦然。
例如
将 2016-11-07 23:57:16(UTC)转换为本地给我 2016年11月8日上午5:57:16 ;什么时候应该 2016年11月8日下午5:57:16
任何可能出错的想法,或者我应该检查什么才能解决这个问题?
答案 0 :(得分:1)
正如@Phil在您的问题的评论中所述, timezone 参数用于将其转换为您指定的时区。鉴于您的输出时间显示为输入时间提前6小时,这意味着您的输入时间为CST(-0600),并显示为UTC(+0000)。
如果输入时间实际上是UTC时间,但您的JavaScript认为它是本地时间(在这种情况下为CST),那么您需要将javascript中的时间修改为实际时间。
您可以使用以下方法执行此操作:
item.created.setMinutes(item.created.getMinutes() - item.created.getTimezoneOffset());
这将减去当前时区偏移量(以分钟为单位)到时间,从而使其在本地时区中的本地时间而不是本地时区中的UTC。然后您可以将其显示为正常日期:
{{item.created | date:"medium"}}