Answers:
试试这个
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);
YYYYY-MM-DD
10000年而中断。为避免这种情况,您可以在T
字符代替。(见en.wikipedia.org/wiki/Year_10,000_problem)
Moment.js将为您处理日期格式。这是如何通过JavaScript标记包括它,然后是如何使用Moment.js格式化日期的示例。
<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"
.toISODateString()
,因为这种情况非常常见...
这是我只获取日期的方法:
let isoDate = "2013-03-10T02:00:00Z";
alert(isoDate.split("T")[0]);
Moment.js是一个很大的库,可用于单个用例。我建议date-fns
改为使用。它提供了Moment.js的大部分功能,捆绑尺寸小得多,而且很多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 8601时间格式,因此浏览器通常会将UTC时间转换为本地时区。尽管这是一个简单的用例,但是您可以做到'2013-03-10T02:00:00Z'.substring(0, 10);
。
对于更复杂的转换,date-fns
是必须走的路。
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
这将以YYYY-MM-DD格式输出日期:
let date = new Date();
date = date.toISOString().slice(0,10);
在日期对象中传递您的日期:
var d = new Date('2013-03-10T02:00:00Z');
d.toLocaleDateString().replace(/\//g, '-');
对于所有使用拆分,切片和其他基于字符串的尝试来获取日期的人,您可能会为与时区相关的失败做好准备!
ISO字符串具有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"
如果您有日期对象:
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)
扩展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"));
我用这个:
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
}
资料来源:http : //gooplus.fr/en/2017/07/13/angular2-typescript-isodate-to-html-date/
var d = new Date("Wed Mar 25 2015 05:30:00 GMT+0530 (India Standard Time)");
alert(d.toLocaleDateString());
使用下面的代码。对您有用。
let currentDate = new Date()
currentDate.toISOString()