JavaScript实用代码片段(第一部分):日期和时间
由 Mux 赞助的 DEV 全球展示挑战赛:展示你的项目!
我打算推出一个基于 JavaScript 的系列文章,其中包含一系列代码片段,旨在帮助读者完成特定任务。每篇文章都将围绕 JavaScript 的一个特定主题展开,我希望这些代码片段能够帮助初学者找到实现特定目标的方法。
这是第一部分,包含一些基于 JavaScript 中 Date 对象的代码片段。如果您想了解更多关于时间和日期的信息,可以使用这个链接。
1.查找昨天的代码:方法 1
// Find Yesterday Method 1
function getYesterday(){
let today = new Date();
let yesterday = new Date();
yesterday.setDate(yesterday.getDate() - 1);
console.log(`Today: ${today.toDateString()} Yesterday: ${yesterday.toDateString()}`);
}
getYesterday();
//Today: Tue May 18 2021 Yesterday: Mon May 17 2021
`getDate()` 方法会返回当前日期,减一后会得到昨天的日期(数值类型)。将这个值传递给 `setDate()` 方法,就能得到昨天的日期/时间信息。使用 `toDateString()` 方法可以将日期部分转换为字符串。
查找昨天的代码:方法 2
// Find Yesterday Method 2
const yesterday1 = (today1 => new Date(today1.setDate(today1.getDate() - 1)))(new Date);
console.log(yesterday1);
2. 寻找明天的代码:方法 1
// Find Tomorrow
function getTomorrow(){
let today = new Date();
let tomorrow = new Date();
tomorrow.setDate(tomorrow.getDate() + 1);
console.log(`Today: ${today.toDateString()} Tomorrow: ${tomorrow.toDateString()}`);
}
getTomorrow();
//Today: Tue May 18 2021 Tomorrow: Wed May 19 2021
该方法与查找昨天日期的方法相同,唯一的区别在于,我们不是将 getDate() 值减去 1,而是将值加 1。
寻找明天的方法:方法二
const tomm1 = (today1 => new Date(today1.setDate(today1.getDate() + 1)))(new Date);
console.log(tomm1);
3. 打印当前日期的代码。
// Print Day
function printWeekday(){
let names = ['Sunday', 'Monday',
'Tuesday', 'Wednesday', 'Thursday',
'Friday', 'Saturday'];
console.log(`Today is ${names[new Date().getDay()]}`);
}
printWeekday();
//Today is Tuesday
`getDay()` 方法返回当前日期,数值范围为 0 到 6,其中 0 代表星期日。该值用作日期名称数组的索引,数组从索引 0 开始,星期日即为日期名称数组。
4. 打印当前月份的代码
// Print Month
function printMonthName(){
let names = ['January', 'February', 'March', 'April', 'May',
'June','July', 'August', 'September', 'October',' November',
'December'];
console.log(`The month is ${names[new Date().getMonth()]}`);
}
printMonthName();
//The month is May
`getMonth()` 方法返回当前月份,数值范围为 0 到 11,其中 0 代表一月。该值用作月份名称数组的索引,数组从索引 0 开始,一月即为月份名称。
5. 打印每月第一天和最后一天的代码
// Get first and last day of month
function firstLastDay(year,month){
let dateFirst = new Date(year,month-1,1);
let dateLast = new Date(year,month,0);
console.log(dateFirst.toLocaleDateString(), dateLast.toLocaleDateString());
}
firstLastDay(2021, 1); // 1/1/2021 1/31/2021
firstLastDay(2021, 2); // 2/1/2021 2/28/2021
firstLastDay(2021, 5); // 5/1/2021 5/31/2021
要获取第一天,创建一个新的 Date 对象,包含年份和月份,月份的首字母从 0 到 11。日期部分可以省略,也可以使用。如果需要获取最后一天,创建一个新的 Date 对象,包含年份、代表下个月的数字和零。由于日期 0 不存在,因此输出将是上个月的最后一天。
6. 编写代码打印一个月中的天数
// Print Number of days in a month
// Month starts from 0, so (year,month, 0) gives last day of month-1
function getDaysInMonth(year,month){
let days = new Date(year, month,0).getDate();
console.log(`Number of days in ${month}/${year}: ${days}`);
}
getDaysInMonth(2021, 1); // Number of days in 1/2021: 31
getDaysInMonth(2021, 2); // Number of days in 2/2021: 28
getDaysInMonth(2021, 5); // Number of days in 5/2021: 31
如果您需要知道最后一天,请创建一个新的 Date 对象,其中包含年份、代表下个月的数字和零,因为没有日期为 0,所以输出将是上个月的最后一天,然后使用 getDate() 方法从输出中获取日期。
7. 以 AM/PM 格式打印时间的代码
// Find AM or PM time in hh:mm:ss format
function amOrpm(t){
let time = t.split(" ")[0].split(':');
if(parseInt(time[0]) >= 12){
parseInt(time[0]) === 12 ? 12 : parseInt(time[0] % 12);
time.push("PM")
}else{
time.push("AM")
}
console.log(`${time[0]}:${time[1]}:${time[2]} ${time[3]}`);
}
amOrpm(new Date().toTimeString()); // 17:31:07 PM
要手动为时间添加上午/下午,首先获取时间部分,在找到冒号“:”时将其分割,检查小时部分,如果小时部分大于或等于 12,则计算小时值与 12 的模,并添加“下午”。如果小时部分小于 12,则在值后添加“上午”。
8. 计算两个日期之间天数的代码
// Calculate number of days between two dates
function noDates(first, last){
let difference = Math.ceil((last - first) / (1000*60*60*24));
console.log(`The number of days between ${first.toLocaleDateString()} and ${last.toLocaleDateString()} is ${Math.abs(difference)} days`);
}
noDates(new Date('2018-1-1'), new Date('2021-05-15'))
//The number of days between 1/1/2018 and 5/15/2021 is 1231 days
在 JavaScript 中,日期对象基于自 1970 年 1 月 1 日以来经过的毫秒数,因此当我们对日期进行算术运算时,输出结果将以毫秒为单位。这里我们尝试计算两个日期之间的差值,得到的差值以毫秒为单位,为了将其转换为日期,我们需要将其除以等于一天的毫秒数 (24*60*60*24)。
9. 计算两个日期之间月份数的代码
// Calculate number of months between two dates
function numMonths(first, last){
let yearToMonths = [last.getFullYear() - first.getFullYear()] * 12;
let months = [yearToMonths + (last.getMonth() + 1)] - (first.getMonth() + 1);
console.log(`Number of months between ${first.toLocaleDateString} and
${last.toLocaleDateString} is ${months}`);
}
numMonths(new Date('2018-05-21'), new Date('2021-05-21'));
// Number of months between 5/21/2018 and 5/21/2021 is 36
可以通过以下方法找到两天之间的日期数量:
- 找出两个日期之间的年份差
- 将差值乘以 12
- 将最近日期中的月份数加到它上面。
- 从该值中减去第二个日期的月份数。
上述方法没有考虑日期,计算月份时,可以通过考虑日期来提高准确性。
文章来源:https://dev.to/kiranrajvjd/javascript-useful-code-snippets-part1-date-and-time-25al