直接设置特定时区的时刻值

问题描述 投票:0回答:1

我们使用的是 Moment v2.30.1。我们尝试将 StartDateTime 应用于对象,但它始终被设置为 utc()。我们想直接将其设置为 美洲/芝加哥时区。

这是具有 startDateTime 值的对象:

export interface ExPCReq extends BaseModel {
    description: string | null | undefined;
    action: PA;
    startDateTime?: moment.Moment;
    userId: number;
}

这就是当前的设置方式:

const pCReq: ExPCReq = {
            description: this.paFrmGrp.get('descriptionCtrl')?.value as string,
            action: PA.Move,
            startDateTime: moment.utc(),
            userId: this.userService.userDetails.value.userId
        };

我已经尝试了很多方法,但这将其设置为空值,因为它说它是无效日期,因为它试图将值设置为字符串,对吗?

const pCReq: ExPCReq = {
            description: this.paFrmGrp.get('descriptionCtrl')?.value as string,
            action: PA.Move,
            startDateTime: moment.tz(moment.toString(), "MM/DD/YYYY h:mm a", "America/Chicago"),
            userId: this.userService.userDetails.value.userId
        };

当我检查 startDateTime 值时,isUTC 始终设置为 true,即使在上面的第二种情况下也是如此。

我只是对这个 Moment 库有点困惑。它曾经要简单得多,因为我大约 10-12 年前使用过它。

angular momentjs
1个回答
0
投票

根据您想要的设置位置,尝试使用固定的 UTC 偏移量,而不是时区。

console.log(moment.utc().utcOffset('-06:00'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script>

© www.soinside.com 2019 - 2024. All rights reserved.