Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将ISO日期转换为日期格式yyyy mm dd?_Javascript_Date - Fatal编程技术网

Javascript 如何将ISO日期转换为日期格式yyyy mm dd?

Javascript 如何将ISO日期转换为日期格式yyyy mm dd?,javascript,date,Javascript,Date,如何从日期中获取格式为yyyy mm dd的日期 我的8601约会是 2013-03-10T02:00:00Z 我怎样才能得到以下信息 2013-03-10 试试这个 date = new Date('2013-03-10T02:00:00Z'); date.getFullYear()+'-' + (date.getMonth()+1) + '-'+date.getDate();//prints expected format. 更新:- 正如评论中指出的,我正在更新答案,以便在需要时打印

如何从日期中获取格式为yyyy mm dd的日期

我的8601约会是

2013-03-10T02:00:00Z
我怎样才能得到以下信息

2013-03-10
试试这个

date = new Date('2013-03-10T02:00:00Z');
date.getFullYear()+'-' + (date.getMonth()+1) + '-'+date.getDate();//prints expected format.
更新:-

正如评论中指出的,我正在更新答案,以便在需要时打印日期和月份的前导零

date=新日期('2013-08-03T02:00:00Z');
年份=日期。getFullYear();
月=日期。getMonth()+1;
dt=date.getDate();
if(dt<10){
dt='0'+dt;
}
如果(月<10){
月份='0'+月份;
}
控制台日志(年+'-'+月+'-'+dt)您可以签出,或者进行漂亮的日期处理

或者只提取ISO字符串的第一部分,它已经包含您想要的内容。 以下是
T
上的示例:

“2013-03-10T02:00:00Z”。拆分(“T”)[0]/“2013-03-10”
另一个例子是前10个字符:

“2013-03-10T02:00:00Z”。substr(0,10)/“2013-03-10”

在日期对象中传递日期:

var d = new Date('2013-03-10T02:00:00Z');
d.toLocaleDateString().replace(/\//g, '-');
只需裁剪字符串:

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);
将为您处理日期格式设置。下面是如何通过JavaScript标记包含它,然后是如何使用矩.js格式化日期的示例


力矩(“2013-03-10T02:00:00Z”)。格式(“YYYY-MM-DD”)/“2013-03-10”

这将以YYYY-MM-DD格式输出日期:

let date = new Date();
date = date.toISOString().slice(0,10);
let dt=新日期('2013-03-10T02:00:00Z');
设dd=dt.getDate();
设mm=dt.getMonth()+1;
设yyyy=dt.getFullYear();
如果(dd使用:

扩展:如果希望格式包含时间,可以将
toTimeString()
添加到字符串中,然后去除GMT部分,如下所示:

var d = new Date('2013-03-10T02:00:00Z');
var fd = d.toLocaleDateString() + ' ' + d.toTimeString().substring(0, d.toTimeString().indexOf("GMT"));
我用了这个:

HTMLDatetoIsoDate(htmlDate){
  let year = Number(htmlDate.toString().substring(0, 4))
  let month = Number(htmlDate.toString().substring(5, 7))
  let day = Number(htmlDate.toString().substring(8, 10))
  return new Date(year, month - 1, day)
}

isoDateToHtmlDate(isoDate){
  let date = new Date(isoDate);
  let dtString = ''
  let monthString = ''
  if (date.getDate() < 10) {
    dtString = '0' + date.getDate();
  } else {
    dtString = String(date.getDate())
  }
  if (date.getMonth()+1 < 10) {
    monthString = '0' + Number(date.getMonth()+1);
  } else {
    monthString = String(date.getMonth()+1);
  }
  return date.getFullYear()+'-' + monthString + '-'+dtString
}
HTMLDatetoIsoDate(htmlDate){
let year=Number(htmlDate.toString().substring(0,4))
let month=Number(htmlDate.toString().substring(5,7))
let day=Number(htmlDate.toString().substring(8,10))
返回新日期(年、月-1、日)
}
isoDateToHtmlDate(isoDate){
let date=新日期(isoDate);
让dtString=''
让monthString=''
if(date.getDate()<10){
dtString='0'+date.getDate();
}否则{
dtString=String(date.getDate())
}
if(date.getMonth()+1<10){
monthString='0'+数字(date.getMonth()+1);
}否则{
monthString=String(date.getMonth()+1);
}
返回日期。getFullYear()++'-'+monthString++'-'+dtString
}
来源:

对于单个用例来说,这是一个相当大的库。我建议改为使用。它基本上提供了矩.js的大部分功能,捆绑包的大小和数量要小得多

需要注意的一点是,由于它是时间格式,浏览器通常会从UTC时间转换为本地时区。虽然这是一个简单的用例,您可能可以执行
'2013-03-10T02:00:00Z'。子字符串(0,10);


对于更复杂的转换
日期fns
是一种方法。

这是我仅为获取日期而做的:

let isoDate=“2013-03-10T02:00:00Z”;

警报(isoDate.split(“T”)[0]);
使用以下代码。它对您很有用

let currentDate = new Date()
currentDate.toISOString()

如果您有日期对象:

var d = new Date('2013-03-10T02:00:00Z');
d.toLocaleDateString().replace(/\//g, '-');
let date=新日期()
让结果=date.toISOString().split`T`[0]
console.log(结果)
var d=新日期(“2015年3月25日星期三05:30:00 GMT+0530(印度标准时间)”;
警报(d.toLocaleDateString());
let isoDate=“2013-03-10T02:00:00Z”;
var d=新日期(isoDate);
d、 toLocaleDateString('en-GB');//dd/mm/yyyy

d、 toLocaleDateString('en-US');//mm/dd/yyyy
对于所有使用拆分、切片和其他基于字符串的尝试获取日期的人,您可能会设置自己的时区相关失败

ISO字符串具有Zulu时区和与此时区对应的日期,这意味着它可能使用实际时区前一天或后一天的日期,您必须在转换链中考虑到这一点

参见此示例:

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"

答案的更好版本

如果安装了
日期fns
,则可以使用此功能


你真的试过吗?这不是一个新问题,已经回答了多次。日期可能重复。拆分(“T”)[0]
请注意,我不认为这会打印带有@user3413723的day或monthAgree的前导零。这不会回答问题,因为它删除了前导零,因此不符合YY-MM-DD格式的要求。工作正常@mritunjay这比DriveByPoster的答案更长,更容易出现打字错误。但我不会给出答案向下投票,因为它更不懂语言。它只是不使用我们可以使用的简单工具。您可以简单地使用
dt=dt.padStart(2,'0'),而不是两个if
month=month.padStart(2,'0')toLocaleDateString()将以“/”格式给出。不是“-”格式。您可以使用上面的“/”替换为“-”。如果toLocaleDateString发生了变化,那么这并不是最优雅的。toLocaleDateString的结果对于所有用户来说都不一致,因此很可能不会产生OP所需的结果。虽然这个代码片段可以解决这个问题,但确实有助于提高您文章的质量。请记住,您将在将来回答读者的问题,这些人可能不知道您的代码建议的原因。还请尽量不要用解释性注释挤满您的代码,因为这会降低代码和解释的可读性
moment
是一个非常庞大的库,仅用于格式化。宁可使用体积小得多且功能相同的工具。@Hozefa,然后用你的解决方案回答OP问题。@Harris-工作做得很顺利!我希望矩有一些像
.toISODateString()
这样的函数,因为这是非常常见的情况……我认为这是所有这些函数中最简单、最优雅的解决方案,但这有什么问题吗?@Aida_Aida我能想到的唯一问题是,如果你的代码
let currentDate = new Date()
currentDate.toISOString()
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"
const date = new Date(2019, 0, 2)
import { formatISO } from 'date-fns'
formatISO(date, { representation: 'date' }) // '2019-01-02' string