如何从iso日期获得格式为yyyy-mm-dd的日期?
我的ISO日期是
2013-03-10T02:00:00Z
我怎样才能得到:
2013-03-10
小智.. 110
只需裁剪字符串:
var date = new Date("2013-03-10T02:00:00Z"); date.toISOString().substring(0, 10);
或者如果你只需要字符串的日期.
var strDate = "2013-03-10T02:00:00Z"; strDate.substring(0, 10);
@Aida_Aida我能想到的唯一问题是,如果您的代码在未来至少8000年处理地理规模的时间,您的代码可能会破坏,因为格式在10000年将是"YYYYY-MM-DD".避免这种情况你可以拆分`T`字符.(参见https://en.wikipedia.org/wiki/Year_10,000_problem) (19认同)
由于ISOString为UTC但Date对象为本地,因此这种方式将无法正确处理时区。您必须考虑到这一点。 (6认同)
Mritunjay.. 77
试试这个
date = new Date('2013-03-10T02:00:00Z'); date.getFullYear()+'-' + (date.getMonth()+1) + '-'+date.getDate();//prints expected format.
更新: -
正如评论中所指出的,如果需要,我正在更新打印日期和月份的前导零的答案.
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);
只需裁剪字符串:
var date = new Date("2013-03-10T02:00:00Z"); date.toISOString().substring(0, 10);
或者如果你只需要字符串的日期.
var strDate = "2013-03-10T02:00:00Z"; strDate.substring(0, 10);
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
需要注意的一点是,由于其ISO时间格式浏览器通常会从UTC时间转换为本地时区.虽然这是一个简单的用例,你可以做date-fns
.
对于更复杂的转换,还有formatting options
很长的路要走.
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"
您可以查看Moment.js,Luxon,date- fns或Day.js以获取日期操作.
或者只是提取ISO字符串的第一部分,它已包含您想要的内容.下面是一个例子分裂的T
:
"2013-03-10T02:00:00Z".split("T")[0] // "2013-03-10"
试试这个
date = new Date('2013-03-10T02:00:00Z'); date.getFullYear()+'-' + (date.getMonth()+1) + '-'+date.getDate();//prints expected format.
更新: -
正如评论中所指出的,如果需要,我正在更新打印日期和月份的前导零的答案.
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);
这是我只获取日期的方法:
let isoDate = "2013-03-10T02:00:00Z";
alert(isoDate.split("T")[0]);