在javascript中将ISO日期转换为日期格式yyyy-mm-dd格式

时间:2014-08-06 11:34:57

标签: javascript date

如何从iso日期获得格式为yyyy-mm-dd的日期?

我的ISO日期

2013-03-10T02:00:00Z

我怎样才能得到:

2013-03-10

20 个答案:

答案 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.jsLuxondate-fnsDay.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()

使用上面的代码对你来说很有用。