moment.calendar将今天显示为当天,而不是5天前

时间:2019-02-17 10:01:26

标签: javascript angular momentjs

我在Angular应用程序中使用的时刻版本为2.24.0(我确实有一个较旧的版本,但已更新以查看是否可以解决此问题,但没有解决)。

我有以下代码

import * as moment from 'moment';
import 'moment-duration-format';
....

public static formatTime(dateTime: Date): string {  
        // To test am subtracting 5 days from today..
        dateTime.setDate(dateTime.getDate() - 5);

        // dateTime now show Tuesday, which is correct
        let result = moment().calendar(dateTime);

        // Result show Sunday! (wrong)
        return result;
      }

我要减去5天只是为了测试calendar()格式。

从调试器... enter image description here

可以看出,calendar()显示的是星期天(今天),但应该是星期二。

有人知道任何解决方法吗?

在此先感谢您的帮助!

[UPDATE1]

为此here添加了一个示例(代码)

有关代码,请参见script.js。

3 个答案:

答案 0 :(得分:0)

如果给setDate函数赋予5:

dateTime.setDate(dateTime.getDate() - 5);

您获得正确的时间-5毫秒。

要获得X天前的奖励,您需要提供:

let today  = new Date()
5DaysAgo = new Date(today .getTime() - (5 * 24 * 60 * 60 * 1000)); 

答案 1 :(得分:0)

既然您正在使用瞬间,为什么不仅仅使用它呢?特别是,不要操纵Date,而要用动量减去5天...

console.log(moment(new Date()).subtract(5, 'days').calendar());
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment-with-locales.min.js"></script>

答案 2 :(得分:-1)

尝试

 let result = moment().calendar(dateTime.getDate());