Angular2日期格式并添加一天

时间:2017-04-05 21:56:56

标签: angular

我的日期为YYYY-MM-DD格式 - 定义为this.queryDate。这设置为2017-04-05

我想在我的系统中显示两个按钮。第一个以5th April 2017格式显示日期。第二个按钮应该是第二天。

actionSheet.addButton({text: this.queryDate });        
actionSheet.addButton({text: [this.queryDate + 1 day] }); 

我不确定如何更改日期格式,然后将24小时添加到我的开始日期。我是Angular 2的新手,但这就是我用PHP实现它的方法。这是我丑陋的Angular2 + PHP杂种代码..

actionSheet.addButton({text: date("jS M Y", strtotime(this.queryDate)) });               
actionSheet.addButton({text: date("jS M Y", strtotime(this.queryDate)+(60*60*24)) });               

如何在Angular 2中实现这一目标?

2 个答案:

答案 0 :(得分:3)

您的代码与JavaScript中的代码非常相似。

new Date((new Date(this.queryDate)).getTime() + (60*60*24*1000));

并将其与您的代码结合使用:

actionSheet.addButton({text: new Date((new Date(this.queryDate)).getTime() + (60*60*24*1000)) }); 

为了解释,new Date('1990 04 03')将您的日期字符串解析为新的日期变量。 .getTime()获取时间作为时间戳(1980年1月1日午夜的MS数量(我认为)。然后你加1天,以毫秒为单位。最后,new Date(...);将你的号码解析回日期。

如果您的日期格式为YYYY-MM-DD,则可能会发现您的日期无法正确解析。当我试用它时,我预计会有几个小时的时间,因为它给了我GMT的时间,而不是我的时区,但如果我给它的格式是YYYY MM DD,它会在我的时区做到这一点。遗憾的是,默认的日期解析工具在JS中并不是最好的。

如果您想使用特定时区,我建议使用moment.js之类的内容来解析日期,因为它更加强大。

You can learn more about JS date parsing here.

修改

我也忘了提及,在JS中以特定格式输出日期并不容易,因此您可以使用getDate()getMonth()自行制作日期,和getFullYear()。如果您确实选择使用moment.js,它们确实具有更容易日期格式化的功能。

答案 1 :(得分:0)

我建议使用Moment.js进行日期操作。它为本机JavaScript日期对象提供了一个包装器。在这样做时,Moment.js扩展了功能,并且还解决了对象中的一些缺陷。

moment().add(1, 'days').format('D MMMM YYYY');    

你甚至可以使用日历输出,它会处理今天,明天......等等你的事情。

https://momentjs.com/docs/#/displaying/calendar-time/

如果您的项目中没有包含时刻且不想添加大依赖项。还有像日期fns这样的替代品。

https://date-fns.org/v1.29.0/docs/addDays