JavaScript 日期
创建 Date 对象
Date 对象由新的 Date() 构造函数创建。
有 4 种方法创建新的日期对象:
- new Date()
- new Date(year, month, day, hours, minutes, seconds, milliseconds)
- new Date(milliseconds)
- new Date(date string)
new Date()
当前时间
new Date(year, month, ...)
new Date(year, month, ...) 用指定日期和时间创建新的日期对象。
7个数字分别指定年、月、日、小时、分钟、秒和毫秒(按此顺序):
var d = new Date(2018, 11, 24, 10, 33, 30, 0);
注:JavaScript 从 0 到 11 计算月份。
一月是 0。十二月是11。
6个数字指定年、月、日、小时、分钟、秒:
2个数字指定年份和月份:
var d = new Date(2018, 11);
不能省略月份。如果只提供一个参数,则将其视为毫秒。
var d = new Date(2018);
上个世纪
一位和两位数年份将被解释为 19xx 年:
//Fri Dec 24 1999 00:00:00 GMT+0800 (China Standard Time)
var d = new Date(99, 11, 24);
new Date(dateString)
var d = new Date("October 13, 2014 11:13:00");
这种方法感觉不实用。。。。。
显示日期
JavaScript(默认情况下)将以全文本字符串格式输出日期:
Wed Mar 25 2015 08:00:00 GMT+0800 (中国标准时间)
在 HTML 中显示日期对象时,会使用 toString() 方法自动转换为字符串。
d = new Date();
document.getElementById("demo").innerHTML = d;
等同于
d = new Date();
document.getElementById("demo").innerHTML = d.toString();
toDateString() 方法将日期转换为更易读的格式:
var d = new Date();
//Thu Sep 15 2022
document.getElementById("demo").innerHTML = d.toDateString();
JavaScript 日期格式
有四种 JavaScript 日期输入格式:
| 类型 | 实例 |
|---|---|
| ISO 日期 | "2018-02-19" (国际标准) |
| 短日期 | "02/19/2018" 或者 "2018/02/19" |
| 长日期 | "Feb 19 2018" 或者 "19 Feb 2019" |
| 完整日期 | "Monday February 25 2015" |
ISO 格式遵守 JavaScript 中的严格标准。
其他格式不太明确,可能是浏览器特定的。
JavaScript ISO 日期
ISO 8601 是表现日期和时间的国际标准。
ISO 8601 语法 (YYYY-MM-DD) 也是首选的 JavaScript 日期格式:
var d = new Date("2018-02-19");
ISO 日期(年和月)
写日期也可以不规定具体某日 (YYYY-MM):
var d = new Date("2015-03");
ISO 日期(只有年)
var d = new Date("2018");
注:这是字符串,不是数字哦、数字不允许只有年,
ISO 日期(完整的日期加时、分和秒)
写日期也可以添加时、分和秒 (YYYY-MM-DDTHH:MM:SS):
var d = new Date("2018-02-19T12:00:00");
日期和时间通过大写字母 T 来分隔。
UTC 时间通过大写字母 Z 来定义。
如果您希望修改相对于 UTC 的时间,请删除 Z 并用 +HH:MM 或 -HH:MM 代替:
实例
var d = new Date("2018-02-19T12:00:00-08:30");
UTC(Universal Time Coordinated)等同于 GMT(格林威治时间)。
注释:UTC,协调世界时,又称世界统一时间,世界标准时间,国际协调时间。
在日期-时间字符串中省略 T 或 Z,在不同浏览器中会产生不同结果。
时区
在设置日期时,如果不规定时区,则 JavaScript 会使用浏览器的时区。
当获取日期时,如果不规定时区,则结果会被转换为浏览器时区。
换句话说,假如日期/时间以 GMT(格林威治标准时间)创建,该日期/时间将被转换为 CST(中国标准时间),如果用户从中国进行浏览。
JavaScript 短日期
短日期通常使用 "MM/DD/YYYY" 这样的语法:
var d = new Date("02/19/2018");
警告
在某些浏览器中,不带前导零的月或其会产生错误:
var d = new Date("2018-2-19");
“YYYY / MM / DD”的行为未定义。
有些浏览器会尝试猜测格式。有些会返回 NaN。
var d = new Date("2018/02/19");
“DD-MM-YYYY”的行为也是未定义的。
有些浏览器会尝试猜测格式。有些会返回 NaN。
var d = new Date("19-02-2018");
JavaScript 长日期
长日期通常以 "MMM DD YYYY" 这样的语法来写:
var d = new Date("Feb 19 2018");
月和天能够以任意顺序出现:
var d = new Date("19 Feb 2018");
但是“月“是英文,对于英文不好的人来说不友好,好在就几个单词,记一下就可以了。
并且,月能够以全称 (January) 或缩写 (Jan) 来写:
var d = new Date("February 19 2018");
逗号会被忽略,且对大小写不敏感:
var d = new Date("FEBRUARY, 25, 2015");
JavaScript 完整日期
JavaScript 接受“完整 JavaScript 格式”的日期字符串:
var d = new Date("Mon Feb 19 2018 06:55:23 GMT+0100 (W. Europe Standard Time)");
JavaScript 会忽略日期名称和时间括号中的错误:
var d = new Date("Fri Mar 26 2018 09:56:24 GMT+0100 (Tokyo Time)");
JavaScript 日期获取方法
日期方法允许您获取并设置日期值(年、月、日、时、分、秒、毫秒)
日期获取方法
获取方法用于获取日期的某个部分(来自日期对象的信息)。下面是最常用的方法(以字母顺序排序):
| 方法 | 描述 |
|---|---|
| getDate() | 以数值返回天(1-31) |
| getDay() | 以数值获取周名(0-6) |
| getFullYear() | 获取四位的年(yyyy) |
| getHours() | 获取小时(0-23) |
| getMilliseconds() | 获取毫秒(0-999) |
| getMinutes() | 获取分(0-59) |
| getMonth() | 获取月(0-11) |
| getSeconds() | 获取秒(0-59) |
| getTime() | 获取时间(从 1970 年 1 月 1 日至今) |
getTime() 方法
getTime() 方法返回自 1970 年 1 月 1 日以来的毫秒数:(时间戳)
var d = new Date();
document.getElementById("demo").innerHTML = d.getTime();//1663210521059
getFullYear() 方法
getFullYear() 方法以四位数字形式返回日期年份:
var d = new Date();
document.getElementById("demo").innerHTML = d.getFullYear();
getFullYear() 方法
getFullYear() 方法以四位数字形式返回日期年份:
var d = new Date();
document.getElementById("demo").innerHTML = d.getFullYear();
getMonth() 方法
getMonth() 以数字(0-11)返回日期的月份:
var d = new Date();
document.getElementById("demo").innerHTML = d.getMonth();
在 JavaScript 中,第一个月(1 月)是月号 0,因此 12 月返回月号 11。
您可以使用名称数组,并使用 getMonth() 将月份作为名称返回:
var d = new Date();
var months =
[
"January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December"
];
document.getElementById("demo").innerHTML = months[d.getMonth()];
getDate() 方法
getDate() 方法以数字(1-31)返回日期的日:
var d = new Date();
document.getElementById("demo").innerHTML = d.getDate();
getHours() 方法
getHours() 方法以数字(0-23)返回日期的小时数:
var d = new Date();
document.getElementById("demo").innerHTML = d.getHours();
getMinutes() 方法
getMinutes() 方法以数字(0-59)返回日期的分钟数:
var d = new Date();
document.getElementById("demo").innerHTML = d.getMinutes();
getSeconds()
getSeconds() 方法以数字(0-59)返回日期的秒数:
var d = new Date();
document.getElementById("demo").innerHTML = d.getSeconds();
getMilliseconds() 方法
getMilliseconds() 方法以数字(0-999)返回日期的毫秒数:
var d = new Date();
document.getElementById("demo").innerHTML = d.getMilliseconds();
getDay() 方法
getDay() 方法以数字(0-6)返回日期的星期名(weekday):
var d = new Date();
document.getElementById("demo").innerHTML = d.getDay();
在 JavaScript 中,一周的第一天(0)表示“星期日”,即使世界上的一些国家认为周的第一天是“星期一”。
您可以使用名称数组,并使用 getDay() 将星期名作为名称返回:
var d = new Date();
var days = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
document.getElementById("demo").innerHTML = days[d.getDay()];
UTC 日期方法
UTC 日期方法用于处理 UTC 日期(通用时区日期,Univeral Time Zone dates):
| 方法 | 描述 |
|---|---|
| getUTCDate() | 等于 getDate(),但返回 UTC 日期 |
| getUTCDay() | 等于 getDay(),但返回 UTC 日 |
| getUTCFullYear() | 等于 getFullYear(),但返回 UTC 年 |
| getUTCHours() | 等于 getHours(),但返回 UTC 小时 |
| getUTCMilliseconds() | 等于 getMilliseconds(),但返回 UTC 毫秒 |
| getUTCMinutes() | 等于 getMinutes(),但返回 UTC 分 |
| getUTCMonth() | 等于 getMonth(),但返回 UTC 月 |
| getUTCSeconds() | 等于 getSeconds(),但返回 UTC 秒 |
JavaScript 日期设置方法
使用“设置日期”方法可以设置日期对象的日期值(年、月、日、小时、分钟、秒、毫秒)。
日期设置方法
设置方法用于设置日期的某个部分。下面是最常用的方法(按照字母顺序排序):
| 方法 | 描述 |
|---|---|
| setDate() | 以数值(1-31)设置日 |
| setFullYear() | 设置年(可选月和日) |
| setHours() | 设置小时(0-23) |
| setMilliseconds() | 设置毫秒(0-999) |
| setMinutes() | 设置分(0-59) |
| setMonth() | 设置月(0-11) |
| setSeconds() | 设置秒(0-59) |
| setTime() | 设置时间(从 1970 年 1 月 1 日至今的毫秒数) |
设置方法和获取方法使用方式一致。