作者简介:一名大四的学生,致力学习前端开发技术
⭐️个人主页:夜宵饽饽的主页
❔ 系列专栏:JavaScript小贴士
学习格言:成功不是终点,失败也并非末日,最重要的是继续前进的勇气
前言:
本文是关于js中的Date对象的使用详情和注意点,时间的处理是需要严谨和小心的,环境不一样,可能是会导致时间出现偏差,这是我自己的知识小碎片,希望可以帮助到大家,欢迎大家的补充和纠正
概念:创建一个JavaScriptDate
实例,该实例呈现时间中的某一个时刻,Date对象则基于Unix Time Stamp,即自1970年1月1日(UTC)起经过的 毫秒数
语法:
new Date()
new Date(value)
new Date(dataString)
//方括号中的参数表示可选的,例如:date,hours,minutes,seconds,milliseconds
new Date(year,monyhIndex [, day [, hours [, minutes [, seconds [, milliseconds]]]]])
创建一个新的Date对象的时候,一定要使用new Date()的构造函数形式创建,假如使用Date()这种常规函数形式创建是,将返回一个字符串,而不是一个Date对象
参数: Date()
构造函数有四种形式的参数
没有参数
如果没有提供参数,那么新创建的Date对象标识实例化时刻的日期和时间
Unix时间戳
value
一个Unix时间戳,它是一个整数值,表示从1970年1月1日 00:00:00起经过的秒数,Unix时间戳通常以毫秒(是13位的整数)或者秒(是10位的整数)为单位的
时间戳字符串dateString
表示日期的字符串值,但是该字符串要能符合两种规则(即符合 IETF-compliant RFC 2822 timestamps 或 ISO8601 的版本)
IETF-compliant RFC 2822 timestamps: 该格式类似于以下示例:
/** GMT表示格林威治标准时间,因为其与世界时(UTC)差异非常小,所以通常作为世界是(UTC)的替代术语使用 **/
Mon, 25 Dec 1995 13:30:00 GMT
这是一种常见的日期字符串格式,通常用于HTTP头部中的日期表示。
ISO8601: ISO8601 是一种国际标准的日期和时间表示法,其基本格式为:
2023-12-19T15:30:00Z
或者,包含时区信息的扩展格式:
makefileCopy code
2023-12-19T15:30:00+03:00
在这个格式中,T分隔日期和时间,Z表示UTC时间,+03:00 表示相对于UTC的时区偏移。
由于浏览器之间的差异与不一致性,强烈不推荐使用
Date
构造函数来解析日期字符串 (或使用与其等价的Date.parse
)。对 RFC 2822 格式的日期仅有约定俗成的支持。对 ISO 8601 格式的支持中,仅有日期的串 (例如 “1970-01-01”) 会被处理为 UTC 而不是本地时间,与其他格式的串的处理不同。
分别提供日期与时间的每一个成员
当至少提供了年份与月份时,这一形式的 Date()
返回的 Date
对象中的每一个成员都来自下列参数。没有提供的成员将使用最小可能值(对日期为1
,其他为0
)。
year
表示年份的整数值。0 到 99 会被映射至 1900 年至 1999 年,其他值代表实际年份。参见 示例。
monthIndex
表示月份的整数值,从 0(1 月)到 11(12 月)。
date可选
表示一个月中的第几天的整数值,从 1 开始。默认值为 1。
hours
可选
表示一天中的小时数的整数值 (24 小时制)。默认值为 0(午夜)。
minutes
可选
表示一个完整时间(如 01:10:00)中的分钟部分的整数值。默认值为 0。
seconds
可选
表示一个完整时间(如 01:10:00)中的秒部分的整数值。默认值为 0。
milliseconds
可选
表示一个完整时间的毫秒部分的整数值。默认值为 0。
实例:
//1. 没有参数
var datenull=new Date()
console.log(datenull); //2023-12-19T07:57:52.339Z
//2. 时间戳
var unixTimestamp = 1639789200000; // 2021-12-19T12:00:00.000Z
var dateObject = new Date(unixTimestamp);
console.log(dateObject); //2021-12-18T01:00:00.000Z
//3. 时间戳字符串`dateString
var dateStringRFC2822 = "Mon, 25 Dec 1995 13:30:00 GMT";
var dateStringISO8601 = "2023-12-19T15:30:00Z";
var timestampRFC2822 = Date.parse(dateStringRFC2822);
var timestampISO8601 = Date.parse(dateStringISO8601);
console.log(timestampRFC2822); //819898200000
console.log(timestampISO8601); //1702999800000
//4. 时间日期成员
var datefour=new Date(2021,11,19)
console.log(datefour); //2021-12-18T16:00:00.000Z
方法:
当我们有了合格的Date对象时就可以使用其内置的方法啦。以下我列出常见的几种
getDate(): 获取月份中的某一天,返回值为1到31之间的一个整数。
codevar currentDate = new Date();
var dayOfMonth = currentDate.getDate();
getMonth(): 获取月份,返回值为0到11之间的一个整数。需要注意,月份是从0开始计数的,0表示一月,11表示十二月。
codevar currentDate = new Date();
var month = currentDate.getMonth();
getFullYear(): 获取四位数的年份。
codevar currentDate = new Date();
var year = currentDate.getFullYear();
getHours(): 获取小时,返回值为0到23之间的一个整数。
codevar currentDate = new Date();
var hours = currentDate.getHours();
getMinutes(): 获取分钟,返回值为0到59之间的一个整数。
codevar currentDate = new Date();
var minutes = currentDate.getMinutes();
getSeconds(): 获取秒数,返回值为0到59之间的一个整数。
codevar currentDate = new Date();
var seconds = currentDate.getSeconds();