如何获得UTC的开始一天的特定时区?



我必须将2022-11-29转换为'2022-11-29 t04:00:00 . 000z ',这是圣多明各时区的偏移量。

但是第一个问题StartFromUtc已经是'2022-11-29T02:00:00+02:00',但我期望'2022-11-29T00:00:00+00:00'。

所以下一个计算也是错误的。

我能帮什么忙?

const tz = 'America/Santo_Domingo';
const startFromDate = '2022-11-29';
const utcdate = dayjs(startFromDate + 'T00:00:00.000Z');
const tzdate = utcdate.tz(tz);
const utcFromTzdate = utcdate.tz(tz);
console.log(
'StartFrom: ', startFromDate, 
'nStartFromUtc: ', utcdate.format(), 
'nCreated UTC:  ', utcdate.toISOString(), 
'nSanto Domingo:', tzdate.format(),
'nUTC For Santo Domingo:', utcFromTzdate.format(),
);
<script src="https://cdn.jsdelivr.net/npm/dayjs@1/dayjs.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/dayjs@1/plugin/utc.js"></script>
<script src="https://cdn.jsdelivr.net/npm/dayjs@1/plugin/timezone.js"></script>
<script>
dayjs.extend(window.dayjs_plugin_utc);
dayjs.extend(window.dayjs_plugin_timezone);  
</script>

给定YYYY-MM-DD格式的时间戳,dayjs假设UTC(可能与ECMA-262一致),因此可以使用以下命令将其解析为零时UTC:

dayjs(startFromDate);

要将其转换为其他时区而不移动日期和时间值,请在调用tz:

时添加true作为第二个参数。
let tzdate = dayjs(startFromDate).tz(tz, true)

然后再次使用tz获取等效的UTC日期和时间:

let utc = tzdate.tz('UTC')

const tz = 'America/Santo_Domingo';
const startFromDate = '2022-11-29';
let tzdate = dayjs(startFromDate).tz(tz, true);
let utc = tzdate.tz('UTC');
console.log(
'StartFrom     : ', startFromDate, 
'nSanto Domingo :', tzdate.format(),
'nUTC eqiuvalent:', utc.format(),
);
<script src="https://cdn.jsdelivr.net/npm/dayjs@1/dayjs.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/dayjs@1/plugin/utc.js"></script>
<script src="https://cdn.jsdelivr.net/npm/dayjs@1/plugin/timezone.js"></script>
<script>
dayjs.extend(window.dayjs_plugin_utc);
dayjs.extend(window.dayjs_plugin_timezone);  
</script>

试试这个:

const tz = 'America/Santo_Domingo';
const startFromDate = dayjs(new Date('2022-11-29 UTC'));
const tzdate = startFromDate.tz(tz);
const utcFromTzdate = startFromDate.tz('UTC');
console.log(
'StartFrom: ', startFromDate, 
'nStartFromUtc: ', startFromDate.format(), 
'nCreated UTC:  ', startFromDate.toISOString(), 
'nSanto Domingo:', tzdate.format(),
'nUTC from Santo Domingo:', utcFromTzdate.format(),
);
<script src="https://cdn.jsdelivr.net/npm/dayjs@1/dayjs.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/dayjs@1/plugin/utc.js"></script>
<script src="https://cdn.jsdelivr.net/npm/dayjs@1/plugin/timezone.js"></script>
<script>
dayjs.extend(window.dayjs_plugin_utc);
dayjs.extend(window.dayjs_plugin_timezone);  
</script>

最新更新