如何从iso日期获得格式为yyyy-mm-dd的日期?
我的ISO日期是
2013-03-10T02:00:00Z
Run Code Online (Sandbox Code Playgroud)
我怎样才能得到:
2013-03-10
Run Code Online (Sandbox Code Playgroud)
小智 110
只需裁剪字符串:
var date = new Date("2013-03-10T02:00:00Z");
date.toISOString().substring(0, 10);
Run Code Online (Sandbox Code Playgroud)
或者如果你只需要字符串的日期.
var strDate = "2013-03-10T02:00:00Z";
strDate.substring(0, 10);
Run Code Online (Sandbox Code Playgroud)
Mri*_*jay 77
试试这个
date = new Date('2013-03-10T02:00:00Z');
date.getFullYear()+'-' + (date.getMonth()+1) + '-'+date.getDate();//prints expected format.
Run Code Online (Sandbox Code Playgroud)
更新: -
正如评论中所指出的,如果需要,我正在更新打印日期和月份的前导零的答案.
date = new Date('2013-08-03T02:00:00Z');
year = date.getFullYear();
month = date.getMonth()+1;
dt = date.getDate();
if (dt < 10) {
dt = '0' + dt;
}
if (month < 10) {
month = '0' + month;
}
console.log(year+'-' + month + '-'+dt);Run Code Online (Sandbox Code Playgroud)
ant*_*129 26
您可以查看Moment.js,Luxon,date- fns或Day.js以获取日期操作.
或者只是提取ISO字符串的第一部分,它已包含您想要的内容.下面是一个例子分裂的T:
"2013-03-10T02:00:00Z".split("T")[0] // "2013-03-10"
Run Code Online (Sandbox Code Playgroud)
小智 18
let isoDate = "2013-03-10T02:00:00Z";
var d = new Date(isoDate);
d.toLocaleDateString('en-GB'); // dd/mm/yyyy
d.toLocaleDateString('en-US'); // mm/dd/yyyyRun Code Online (Sandbox Code Playgroud)
nat*_*ter 13
与瑞典语言环境一起使用toLocaleDateString会返回 ISO 格式的日期。
function getISODate(date) {
//return date.toLocaleDateString('fr-CA');
return date.toLocaleDateString('sv-SE');
}
getISODate(new Date()); // '2022-03-24'
Run Code Online (Sandbox Code Playgroud)
PS 这曾经适用于加拿大“en-CA”区域设置,但现在至少自 2023 年 2 月起 Firefox 和 Chromium v110+ 使用美国日期格式。它仍然适用于加拿大“fr-CA”语言环境。不确定哪一个更适合未来。
Har*_*ris 12
Moment将为您处理日期格式.以下是如何通过javascript标记包含它,然后是如何使用时刻格式化日期的示例.
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.14.1/moment.min.js"></script>
moment("2013-03-10T02:00:00Z").format("YYYY-MM-DD") // "2013-03-10"
Run Code Online (Sandbox Code Playgroud)
date-fns是一个非常大的库,用于一个用例.建议formatting options改用.它提供了基本上最大的功能,'2013-03-10T02:00:00Z'.substring(0, 10);具有更小的捆绑尺寸和许多date-fns.
import format from 'date-fns/format'
format('2013-03-10T02:00:00Z', 'YYYY-MM-DD'); // 2013-03-10, YYYY-MM-dd for 2.x
Run Code Online (Sandbox Code Playgroud)
需要注意的一点是,由于其ISO时间格式浏览器通常会从UTC时间转换为本地时区.虽然这是一个简单的用例,你可以做date-fns.
对于更复杂的转换,还有formatting options很长的路要走.
小智 6
这将以 YYYY-MM-DD 格式输出日期:
let date = new Date();
date = date.toISOString().slice(0,10);
Run Code Online (Sandbox Code Playgroud)
这是我只获取日期的方法:
let isoDate = "2013-03-10T02:00:00Z";
alert(isoDate.split("T")[0]);Run Code Online (Sandbox Code Playgroud)
对于所有使用 split、slice 和其他基于字符串的尝试来获取日期的人来说,您可能会为与时区相关的失败设置自己!
ISO-String 具有 Zulu-Timezone 和根据该时区的日期,这意味着它可能使用实际时区之前或之后一天的日期,您必须在转换链中考虑到这一点。
看这个例子:
const timeZoneRelatedDate = new Date(2020, 0, 14, 0, 0);
console.log(timeZoneRelatedDate.toLocaleDateString(
'ja-JP',
{
year: 'numeric',
month: '2-digit',
day: '2-digit'
}
).replace(/\//gi,'-'));
// RESULT: "2020-01-14"
console.log(timeZoneRelatedDate.toISOString());
// RESULT: "2020-01-13T23:00:00.000Z" (for me in UTC+1)
console.log(timeZoneRelatedDate.toISOString().slice(0,10));
// RESULT: "2020-01-13"
Run Code Online (Sandbox Code Playgroud)
小智 6
最好的格式化方法是使用带有选项的 toLocaleDateString
const options = {year: 'numeric', month: 'numeric', day: 'numeric' };
const date = new Date('2013-03-10T02:00:00Z').toLocaleDateString('en-EN', options)
Run Code Online (Sandbox Code Playgroud)
在此处检查日期部分的日期选项https://www.w3schools.com/jsref/jsref_tolocalestring.asp
小智 5
将日期传递给日期对象.
var d = new Date('2013-03-10T02:00:00Z');
d.toLocaleDateString().replace(/\//g, '-');
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
172013 次 |
| 最近记录: |