이 문서는 언급 moment.ISO_8601
– (2.7.0에서 서식 옵션으로 http://momentjs.com/docs/#/parsing/special-formats/ :하지만 어느 쪽이 작업 (심지어 2.7.0)의)
var date = moment();
date.format(moment.ISO_8601); // error
moment.format(date, moment.ISO_8601); // error
( http://jsfiddle.net/b3d6uy05/1/ )
moment.js에서 ISO 8601을 얻으려면 어떻게해야합니까?
답변
moment().toISOString(); // or format() - see below
http://momentjs.com/docs/#/displaying/as-iso-string/
업데이트
대답을 기반으로 : @sennet 및 @dvlsg에 의해 주석으로는 (참조 바이올린을 )은 차이가 있음을 주목해야 format
하고 toISOString
. 둘 다 정확하지만 기본 프로세스가 다릅니다. toISOString
Date 객체로 변환하고 UTC로 설정 한 다음 기본 날짜 프로토 타입 함수를 사용하여 ISO8601을 UTC (밀리 초 YYYY-MM-DD[T]HH:mm:ss.SSS[Z]
) 로 출력 합니다. 반면 밀리 초없이 format
기본 형식 ( YYYY-MM-DDTHH:mm:ssZ
)을 사용 하고 시간대 오프셋을 유지합니다.
예기치 않은 결과가 발생할 수 있다고 생각 하여 문제 를 열었습니다 .
답변
format
매개 변수없이 사용 :
var date = moment();
date.format(); // "2014-09-08T08:02:17-05:00"
답변
바닐라 JS로도 가능
new Date().toISOString() // "2017-08-26T16:31:02.349Z"
답변
Mongoose를 사용하여 MongoDB에 날짜를 저장하는 경우 모든 날짜가 밀리 초와 함께 ISO 날짜로 저장되므로 toISOString ()을 사용해야합니다.
moment.format()
2018-04-17T20:00:00Z
moment.toISOString() -> USE THIS TO STORE IN MONGOOSE
2018-04-17T20:00:00.000Z
답변
날짜 부분 (예 : 2017-06-27)을 원하고 시간대와 아랍어에 관계없이 작동하려면 다음과 같이 작성하십시오.
function isoDate(date) {
if (!date) {
return null
}
date = moment(date).toDate()
// don't call toISOString because it takes the time zone into
// account which we don't want. Also don't call .format() because it
// returns Arabic instead of English
var month = 1 + date.getMonth()
if (month < 10) {
month = '0' + month
}
var day = date.getDate()
if (day < 10) {
day = '0' + day
}
return date.getFullYear() + '-' + month + '-' + day
}
답변
var x = moment();
//date.format(moment.ISO_8601); // error
moment("2010-01-01T05:06:07", ["YYYY", moment.ISO_8601]);; // error
document.write(x);