Angular DatePipe - 将秒数转换为零时区时间(12 而不是 00)
Angular DatePipe - Convert seconds to time with zero timezone (12 instead of 00)
我想使用 DatePipe 转换数字(代表秒)
得到这样的结果:
00:00:05
我试过用 DatePipe 这样做:
<label>No timezone (default) {{ 5 * 1000 | date:'h:mm:ss'}}</label>
但它产生的结果包含时区 +4(这不是我想要的):
4:00:05
所以为了避免这种情况,我尝试将时区偏移设置为 0:
<label>{{ 5 * 1000 | date:'h:mm:ss z':'+0000'}}</label>
<label>{{ 5 * 1000 | date:'h:mm:ss z':'UTC'}}</label>
<label>{{ 5 * 1000 | date:'h:mm:ss z':'GMT'}}</label>
<label>{{ 5 * 1000 | date:'h:mm:ss z':'GMT+0'}}</label>
<label>{{ 5 * 1000 | date:'h:mm:ss z':'UTC+0'}}</label>
但是这次时间错了 12 小时而不是 0:
12:00:05 GMT+0
那么有没有一种方法可以在不改变时区的情况下使用 DatePipe 将秒数转换为时间?
或者 angular 是否有其他管道可用于此目的?
如果您的问题只是转换问题,试试这个:
var date = new Date(null);
date.setSeconds(SECONDS); // specify value for SECONDS here
var result = date.toISOString().substr(11, 8);
这很容易
const SECONDS_COUNT = 61;
const duration = moment.duration(SECONDS_COUNT, 'seconds');
const resultstring = moment.utc(duration.asMilliseconds()).format('HH:mm:ss');
console.log(resultstring);
应该输出00:01:01
确保使用 moment.utc()
输出而不是 moment()
以避免区域设置启动。
所以这个相当棘手的问题有一个非常简单的解决方案。
我们只需要使用 'H' 而不是 'h'(范围是 0-23)。
示例:
<label>{{ 5 * 1000 | date:'H:mm:ss':'UTC'}}</label>
得到 '12' 的原因是 'h' 在时间格式中的使用,其中 limits 值从 1 到 12 并将 00:00 转换为 12:00 (AM ).
我想使用 DatePipe 转换数字(代表秒) 得到这样的结果:
00:00:05
我试过用 DatePipe 这样做:
<label>No timezone (default) {{ 5 * 1000 | date:'h:mm:ss'}}</label>
但它产生的结果包含时区 +4(这不是我想要的):
4:00:05
所以为了避免这种情况,我尝试将时区偏移设置为 0:
<label>{{ 5 * 1000 | date:'h:mm:ss z':'+0000'}}</label>
<label>{{ 5 * 1000 | date:'h:mm:ss z':'UTC'}}</label>
<label>{{ 5 * 1000 | date:'h:mm:ss z':'GMT'}}</label>
<label>{{ 5 * 1000 | date:'h:mm:ss z':'GMT+0'}}</label>
<label>{{ 5 * 1000 | date:'h:mm:ss z':'UTC+0'}}</label>
但是这次时间错了 12 小时而不是 0:
12:00:05 GMT+0
那么有没有一种方法可以在不改变时区的情况下使用 DatePipe 将秒数转换为时间?
或者 angular 是否有其他管道可用于此目的?
如果您的问题只是转换问题,试试这个:
var date = new Date(null);
date.setSeconds(SECONDS); // specify value for SECONDS here
var result = date.toISOString().substr(11, 8);
const SECONDS_COUNT = 61;
const duration = moment.duration(SECONDS_COUNT, 'seconds');
const resultstring = moment.utc(duration.asMilliseconds()).format('HH:mm:ss');
console.log(resultstring);
应该输出00:01:01
确保使用 moment.utc()
输出而不是 moment()
以避免区域设置启动。
所以这个相当棘手的问题有一个非常简单的解决方案。
我们只需要使用 'H' 而不是 'h'(范围是 0-23)。
示例:
<label>{{ 5 * 1000 | date:'H:mm:ss':'UTC'}}</label>
得到 '12' 的原因是 'h' 在时间格式中的使用,其中 limits 值从 1 到 12 并将 00:00 转换为 12:00 (AM ).