如何从iso日期获得格式为yyyy-mm-dd的日期?
我的ISO日期
2013-03-10T02:00:00Z
我怎样才能得到:
2013-03-10
答案 0 :(得分:100)
只需裁剪字符串:
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);
答案 1 :(得分:61)
试试这个
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);
答案 2 :(得分:21)
您可以结帐Moment.js,Luxon,date-fns或Day.js以便进行日期操作。
或者只是提取ISO字符串的第一部分,它已包含您想要的内容。
以下是T
上的splitting的示例:
"2013-03-10T02:00:00Z".split("T")[0] // "2013-03-10"
答案 3 :(得分:11)
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"
答案 4 :(得分:7)
moment
是一个非常大的库,可用于单个用例。建议改用date-fns
。它基本上提供了moment
的最多功能,其捆绑包大小要小得多,formatting options
很多。
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时间转换为本地时区。虽然这是一个简单的用例,你可以做'2013-03-10T02:00:00Z'.substring(0, 10);
。
对于更复杂的转化,date-fns
是可行的方法。
答案 5 :(得分:6)
将日期传递给日期对象。
var d = new Date('2013-03-10T02:00:00Z');
d.toLocaleDateString().replace(/\//g,'-');
答案 6 :(得分:5)
对于所有使用拆分,切片和其他基于字符串的尝试来获取日期的人,您可能会为与时区相关的失败做好准备!
ISO字符串具有Zulu时区和根据该时区的日期,这意味着它可能使用实际时区的前一天或后一天的日期,您必须在转换链中将其考虑在内。 / p>
请参见以下示例:
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"
答案 7 :(得分:3)
这将以YYYY-MM-DD格式输出日期:
let date = new Date();
date = date.toISOString().slice(0,10);
答案 8 :(得分:3)
这就是我只做日期的事,
let isoDate = "2013-03-10T02:00:00Z";
alert(isoDate.split("T")[0]);
答案 9 :(得分:2)
new Date()。toISOString()。substring(0,10);
答案 10 :(得分:2)
如果您有日期对象:
let date = new Date()
let result = date.toISOString().split`T`[0]
console.log(result)
或
let date = new Date()
let result = date.toISOString().slice(0, 10)
console.log(result)
答案 11 :(得分:2)
var d = new Date("Wed Mar 25 2015 05:30:00 GMT+0530 (India Standard Time)");
alert(d.toLocaleDateString());
答案 12 :(得分:1)
延伸@rk rk解决方案。如果您希望格式包含时间,可以将toTimeString()
添加到字符串中,然后剥离GMT部分,如下所示:
var d = new Date('2013-03-10T02:00:00Z');
var fd = d.toLocaleDateString()+' '+d.toTimeString().substring(0, d.toTimeString().indexOf("GMT"));
答案 13 :(得分:1)
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/yyyy
答案 14 :(得分:1)
@Hozefa提供了更好的答案。
如果安装了date-fns
,则可以使用formatISO函数
const date = new Date(2019, 0, 2)
import { formatISO } from 'date-fns'
formatISO(date, { representation: 'date' }) // '2019-01-02' string
答案 15 :(得分:0)
let dt = new Date('2013-03-10T02:00:00Z');
let dd = dt.getDate();
let mm = dt.getMonth()+1;
let yyyy = dt.getFullYear();
if(dd<10){
dd='0'+dd;
}
if(mm<10){
mm='0'+mm;
}
return yyyy+'-'+mm+'-'+ dd;
答案 16 :(得分:0)
答案 17 :(得分:0)
这可以由 date-and-time 覆盖:
let now = date.format(new Date(), 'YYYY-MM-DD');
console.log(now);
<script src="https://cdn.jsdelivr.net/npm/date-and-time/date-and-time.min.js"></script>
答案 18 :(得分:0)
最好的格式化方法是使用带有选项的 toLocaleDateString
const options = {year: 'numeric', month: 'numeric', day: 'numeric' };
const date = new Date('2013-03-10T02:00:00Z').toLocaleDateString('en-EN', options)
在此处检查日期部分的日期选项https://www.w3schools.com/jsref/jsref_tolocalestring.asp
答案 19 :(得分:-2)
让currentDate = new Date() currentDate.toISOString()
使用上面的代码对你来说很有用。