在不转换为 Javascript 中的纪元的情况下增加日期对象
Posted
技术标签:
【中文标题】在不转换为 Javascript 中的纪元的情况下增加日期对象【英文标题】:Increment Date Object in without converting to epoch in Javascript 【发布时间】:2021-08-27 22:20:03 【问题描述】:是否可以在不将对象转换为纪元的情况下将日期对象增加一天?
例如传统方式会将日期对象转换为纪元:
var today = new Date();
var tomorrow = new Date(today.valueOf()); // copy date object without converting to epoch
tomorrow.setDate(tomorrow.getDate() + 1); // now gets converted to epoch :'(
【问题讨论】:
这能回答你的问题吗? Add days to javascript Date 【参考方案1】:set* 方法不会“转换为纪元数”,它们会修改日期的内部时间值并返回修改后的值。日期对象仍然是日期。
let today = new Date();
today.setHours(0,0,0,0); // Start of day
let tvToday = +today;
let tomorrow = new Date(today);
// setDate adjusts the time value and returns it
let tvTomorrow = tomorrow.setDate(tomorrow.getDate() + 1);
console.log('Today\'s date: ' + today.toDateString());
console.log('Today\'s time value: ' + tvToday);
console.log('Tomorrow\'s date: ' + tomorrow.toDateString());
console.log('Tomorrow\'s time value: ' + tvTomorrow);
// May vary from 24 by up to 1 hour depending on crossing DST boundaries
console.log('Difference in hours: ' + ((tvTomorrow - tvToday)/3.6e6));
如果你想要一个添加一天并返回一个新 Date 对象的方法,请编写一个函数,可能名为 addDays,它需要一个日期和天数来添加并返回一个新 Date 对象随着天数的增加。很多库都有这样的功能,不难写。
【讨论】:
【参考方案2】:不确定您是否可以在不转换的情况下做到这一点。也许之后转换回来。
var today = new Date();
var tomorrow = new Date(today.valueOf());
const x = tomorrow.setDate(tomorrow.getDate() + 1);
console.log(x) //epoch
const z = new Date(x)
console.log(z.toString())
【讨论】:
因为tomorrow.toString()
太短了?
我这样写是为了让程序清晰。以上是关于在不转换为 Javascript 中的纪元的情况下增加日期对象的主要内容,如果未能解决你的问题,请参考以下文章
如何在不转换为json的情况下将C#数组用于javascript数组?