一、Date对象
在JavaScript中,可以通过使用Date对象来获取当前的日期和时间。Date对象包含了很多内置方法,比如getFullYear()、getMonth()、getDate(),它们分别用于获取当前日期的年、月、日。这里我们可以先使用Date对象获取当前日期,然后对日期进行计算,来得到30天前的日期:
const today = new Date(); // 获取当前日期 const thirtyDaysAgo = new Date(today.getFullYear(), today.getMonth(), today.getDate() - 30); // 获取30天前的日期
在上面的代码中,我们通过new Date()方法获取了当前的日期,然后用这个日期初始化了一个新的Date对象。接着,我们用today对象中的年、月、日(使用getDate()方法)来计算出了30天前的日期,并初始化了一个新的Date对象thirtyDaysAgo。
二、getTime()方法
另一种获取30天前日期的方法是使用getTime()方法。这个方法返回的是一个数值,代表从1970年1月1日00:00:00 UTC到当前日期的毫秒数。通过对这个数值进行加减运算,我们可以得到任意日期的毫秒数,然后再用这个毫秒数初始化一个新的Date对象。
const today = new Date(); const thirtyDaysAgo = new Date(today.getTime() - 30 * 24 * 60 * 60 * 1000);
在上面的代码中,我们使用today.getTime()获取了当前日期的毫秒数,然后用这个数值减去30天的毫秒数,来得到30天前的日期的毫秒数。最后,我们把这个毫秒数转换成日期,初始化了一个新的Date对象thirtyDaysAgo。
三、toLocaleDateString()方法
如果只需要获取日期的字符串,可以使用toLocaleDateString()方法。这个方法会把日期对象转换成指定区域和语言格式的字符串。默认情况下,它返回的字符串包含日期和时间,但是我们可以通过传递一个选项对象来指定只返回日期部分:
const today = new Date(); const thirtyDaysAgo = new Date(today.getTime() - 30 * 24 * 60 * 60 * 1000); const options = { year: 'numeric', month: '2-digit', day: '2-digit' }; const dateString = thirtyDaysAgo.toLocaleDateString('zh-CN', options); console.log(dateString); // "2021/08/15"
在上面的代码中,我们传递了一个选项对象到toLocaleDateString()方法中,这个对象的属性包含了我们想要的日期格式。然后,我们把选项对象和区域设置('zh-CN')一起传递给方法,来生成一个只包含日期的字符串。