有四种 JavaScript 日期输入格式:
类型 | 实例 |
ISO 日期 | "2018-02-19" (国际标准) |
短日期 | "02/19/2018" 或者 "2018/02/19" |
长日期 | "Feb 19 2018" 或者 "19 Feb 2019" |
完整日期 | "Monday February 25 2015" |
ISO 格式遵守 JavaScript 中的严格标准。其他格式不太明确,可能是浏览器特定的。
JavaScript 日期输出
无论输入格式如何,JavaScript 默认将输出全文本字符串格式:
Mon Feb 19 2018 06:00:00 GMT+0800 (中国标准时间)
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 日期(只有年)
写日期也可以不规定具体的月和日 (YYYY):
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 代替
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
document.getElementById("demo").innerHTML =
new Date("2015-03-25T12:00:00-06:00");
</script>
</body>
</html>
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");
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
var d = new Date("Mar 26 2019");
document.getElementById("demo").innerHTML = d;
</script>
</body>
</html>
月和天能够以任意顺序出现 var d = new Date("19 Feb 2018");
并且,月能够以全称 (January) 或缩写 (Jan) 来写 var d = new Date("February 19 2018");
var d = new Date("Feb 19 2018");逗号会被忽略,且对大小写不敏感var d = new Date("FEBRUARY, 25, 2015");
JavaScript 完整日期
JavaScript 接受“完整 JavaScript 格式”的日期字符串
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
var msec = Date.parse("March 21, 2012");
document.getElementById("demo").innerHTML = msec;
</script>
</body>
</html>
JavaScript 会忽略日期名称和时间括号中的错误:
实例
<!DOCTYPE html>
<html>
<body>
<p id="demo"></p>
<script>
var msec = Date.parse("March 22, 2019");
var d = new Date(msec);
document.getElementById("demo").innerHTML = d;
</script>
</body>
</html>