JavaScript 日期输入格式一般有 3 种类型:
“2015-03-25”(国际标准)
“2015 年 3 月 25 日”
“2015 年 3 月 25 日”或“2015 年 3 月 25 日”
ISO 格式遵循严格的 JavaScript 标准。
其他格式则不然 定义如此明确,并且可能是特定于浏览器的。
与输入格式无关,JavaScript 将(默认情况下)完整输出日期 文本字符串格式:
ISO 8601 是日期和日期表示的国际标准 次。
ISO 8601 语法 (YYYY-MM-DD) 也是首选的 JavaScript 日期格式:
const d = new Date("2015-03-25");
自己尝试一下→
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript ISO Dates</h2>
<p id="demo"></p>
<script>
const d = new Date("2015-03-25");
document.getElementById("demo").innerHTML = d;
</script>
</body>
</html>
计算的日期将相对于您的时区。
根据您的时区,上面的结果 3月24日至3月25日期间会有变化。
可以在不指定日期的情况下写入 ISO 日期 (YYYY-MM):
const d = new Date("2015-03");
自己尝试一下 →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript ISO Dates</h2>
<p id="demo"></p>
<script>
const d = new Date("2015-03");
document.getElementById("demo").innerHTML = d;
</script>
</body>
</html>
2 月 28 日至 3 月 1 日期间,时区会使上述结果有所不同。
ISO 日期可以不写月份和日期 (YYYY):
const d = new Date("2015");
自己尝试一下→
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript ISO Dates</h2>
<p id="demo"></p>
<script>
const d = new Date("2015");
document.getElementById("demo").innerHTML = d;
</script>
</body>
</html>
2014 年 12 月 31 日至 2015 年 1 月 1 日期间,上述结果将因时区而异。
ISO 日期可以添加小时、分钟和秒 (YYYY-MM-DDTHH:MM:SSZ):
const d = new Date("2015-03-25T12:00:00Z");
自己尝试一下 →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript ISO Dates</h2>
<p>Separate date and time with a capital T.</p>
<p>Indicate UTC time with a capital Z.</p>
<p id="demo"></p>
<script>
const d = new Date("2015-03-25T12:00:00Z");
document.getElementById("demo").innerHTML = d;
</script>
</body>
</html>
日期和时间用大写 T 分隔。
UTC 时间用大写字母 Z 定义。
如果要修改相对于 UTC 的时间,请删除 Z 并添加 +HH:MM 或 -HH:MM 反而:
const d = new Date("2015-03-25T12:00:00-06:30");
自己尝试一下 →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript ISO Dates</h2>
<p>Modify the time relative to UTC by adding +HH:MM or subtraction -HH:MM to the time.</p>
<p id="demo"></p>
<script>
document.getElementById("demo").innerHTML =
new Date("2015-03-25T12:00:00-06:00");
</script>
</body>
</html>
UTC(世界协调时间)与 GMT(格林威治标准时间)相同。
在日期时间字符串中省略 T 或 Z 可能会在不同的浏览器中产生不同的结果。
设置日期时,如果不指定时区,JavaScript 将使用 浏览器的时区。
当获取日期时,不指定时区,结果是 转换为浏览器的时区。
换句话说:如果日期/时间是在 GMT(格林威治标准时间)中创建的,则 如果用户浏览,日期/时间将转换为 CDT(美国中部夏令时间) 来自美国中部。
短日期使用“MM/DD/YYYY”语法编写,如下所示:
const d = new Date("03/25/2015");
自己尝试一下→
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript new Date()</h2>
<p id="demo"></p>
<script>
const d = new Date("03/25/2015");
document.getElementById("demo").innerHTML = d;
</script>
</body>
</html>
在某些浏览器中,没有前导零的月份或日期可能会产生错误:
const d = new Date("2015-3-25");
“YYYY/MM/DD”的行为未定义。
某些浏览器会 尝试猜测格式。有些会返回 NaN。
const d = new Date("2015/03/25");
“DD-MM-YYYY”的行为也未定义。
某些浏览器会 尝试猜测格式。有些会返回 NaN。
const d = new Date("25-03-2015");
长日期通常使用“MMM DD YYYY”语法编写,如下所示:
const d = new Date("Mar 25 2015");
自己尝试一下→
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript new Date()</h2>
<p id="demo"></p>
<script>
const d = new Date("Mar 25 2015");
document.getElementById("demo").innerHTML = d;
</script>
</body>
</html>
月和日可以按任意顺序排列:
const d = new Date("25 Mar 2015");
自己尝试一下 →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript new Date()</h2>
<p id="demo"></p>
<script>
const d = new Date("25 Mar 2015");
document.getElementById("demo").innerHTML = d;
</script>
</body>
</html>
并且,月份可以写成完整的(January),或缩写的(Jan):
const d = new Date("January 25 2015");
自己尝试一下→
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript new Date()</h2>
<p id="demo"></p>
<script>
const d = new Date("January 25 2015");
document.getElementById("demo").innerHTML = d;
</script>
</body>
</html>
const d = new Date("Jan 25 2015");
自己尝试一下 →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript new Date()</h2>
<p id="demo"></p>
<script>
const d = new Date("Jan 25 2015");
document.getElementById("demo").innerHTML = d;
</script>
</body>
</html>
逗号被忽略。名称不区分大小写:
const d = new Date("JANUARY, 25, 2015");
自己尝试一下→
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript new Date()</h2>
<p id="demo"></p>
<script>
const d = new Date("JANUARY, 25, 2015");
document.getElementById("demo").innerHTML = d;
</script>
</body>
</html>
如果您有有效的日期字符串,则可以使用 Date.parse()
方法将其转换为毫秒。
Date.parse()
返回日期和一月之间的毫秒数 1970 年 1 月:
let msec = Date.parse("March 21, 2012");
自己尝试一下→
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Date.parse()</h2>
<p>Date.parse() returns the number of milliseconds between the date and January 1, 1970:</p>
<p id="demo"></p>
<script>
const msec = Date.parse("March 21, 2012");
document.getElementById("demo").innerHTML = msec;
</script>
</body>
</html>
然后,您可以使用毫秒数将其转换为日期对象:
let msec = Date.parse("March 21, 2012");
const d = new Date(msec);
自己尝试一下 →
<!DOCTYPE html>
<html>
<body>
<h2>JavaScript Date.parse()</h2>
<p>Date.parse(string) returns milliseconds.</p>
<p>You can use the return value to convert the string to a date object:</p>
<p id="demo"></p>
<script>
let msec = Date.parse("March 21, 2012");
const d = new Date(msec);
document.getElementById("demo").innerHTML = d;
</script>
</body>
</html>
如需完整的日期参考,请访问我们的:
完整的 JavaScript 日期参考。
该参考包含所有日期属性的描述和示例 方法。