source

ISO 날짜를 yyyy-mm-dd 날짜 형식으로 변환하는 방법은 무엇입니까?

factcode 2023. 7. 28. 22:56
반응형

ISO 날짜를 yyyy-mm-dd 날짜 형식으로 변환하는 방법은 무엇입니까?

ISO 8601 날짜에서 yyyy-mm-dd 형식의 날짜를 얻으려면 어떻게 해야 합니까?

나의 8601 데이트는

2013-03-10T02:00:00Z

다음 사항은 어떻게 받을 수 있습니까?

2013-03-10

문자열을 자르기만 하면 됩니다.

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);

사용해 보세요.

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

업데이트:-

코멘트에서 지적한 바와 같이, 저는 필요하다면 날짜와 달의 선행 0을 인쇄하도록 답변을 업데이트하고 있습니다.

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);

date-fns 또는 Day.js를 체크아웃하여 다음과 같은 형식을 포함한 멋진 날짜 조작을 할 수 있습니다.YYYY-MM-DD.

또는 ISO 문자열의 첫 번째 부분을 추출하기만 하면 이미 원하는 내용이 포함되어 있습니다.

"2013-03-10T02:00:00Z".slice(0, 10) // "2013-03-10"

다음은 날짜만 확인하기 위해 수행하는 작업입니다.

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

alert(isoDate.split("T")[0]);

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

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"

Moment.js는 단일 사용 사례에 사용하기에 꽤 큰 라이브러리입니다.대신 사용하는 것이 좋습니다.기본적으로 Moment.js의 가장 많은 기능을 제공하며 번들 크기가 훨씬 작고 많은 기능을 제공합니다.

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가는 길입니다.

사용.toLocaleDateString스웨덴 로케일로 날짜를 ISO 형식으로 반환합니다.

function getISODate(date) {
    //return date.toLocaleDateString('fr-CA');
    return date.toLocaleDateString('sv-SE');
}
getISODate(new Date()); // '2022-03-24'

추신: 이전에는 캐나다의 'en-CA' 로케일에서 작동했지만, 적어도 2023년 2월부터 Firefox와 Cromium v110+는 미국 날짜 형식을 사용합니다.여전히 캐나다 'fr-CA' 로케일에서 작동합니다.어떤 것이 더 미래에 대비할 수 있는지 확실하지 않습니다.

날짜를 얻기 위해 분할, 슬라이스 및 기타 문자열 기반 시도를 사용하는 모든 사용자에게 표준 시간대 관련 실패를 설정할 수 있습니다!

ISO-String에는 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"

사용:

new Date().toISOString().substring(0, 10);

날짜가 YYY-MM-DD 형식으로 출력됩니다.

let date = new Date();
date = date.toISOString().slice(0,10);

형식을 지정하는 가장 좋은 방법은 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 에서 날짜 섹션에서 날짜 옵션을 확인하십시오.

날짜 개체에 날짜를 전달합니다.

var d = new Date('2013-03-10T02:00:00Z');
d.toLocaleDateString().replace(/\//g, '-');

날짜 개체가 있는 경우:

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)

rkrk의 솔루션을 확장하기 위해:형식에 시간이 포함되도록 하려면 다음을 추가할 수 있습니다.toTimeString()다음과 같이 GMT 부분을 제거합니다.

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

@Hozefa의 더 나은 버전의 답변.

가지고 계신다면,date-fns설치된 경우 형식을 사용할 수 있습니다.ISO 함수

const date = new Date(2019, 0, 2)
import { formatISO } from 'date-fns'
formatISO(date, { representation: 'date' }) // '2019-01-02' string

표준 시간대가 있는 경우 다음을 수행할 수 있습니다.

const myDate = "2022-10-09T18:30:00.000Z"
const requestTimezone = "Asia/Calcutta";

const newDate = new Date(myDate).toLocaleString("en-CA", {
  dateStyle: "short",
  timeZone: requestTimezone,
});

console.log(newDate)
>> 2022-10-10 

다른 출력:

const myDate = "2022-10-02T21:00:00.000Z"
const requestTimezone = "Asia/Jerusalem";
>> 2022-10-03 

const myDate = "2022-09-28T04:00:00.000Z"
const requestTimezone = "America/New_York";
>> 2022-09-28

경고: 대부분의 답은 틀렸습니다.

은 그이는 때문입니다.toISOString()로컬 날짜가 아닌 UTC 날짜를 항상 반환합니다.들어이 "UTC 시간"인 0500는 그리고신의당시간대는는zone시▁and▁is▁time입니다.GMT-0800toISOString()UTC 날짜가 될 것이며, 이는 현지 표준 시간대 날짜보다 하루 앞서 있을 것입니다.

먼저 날짜를 로컬 날짜로 변환해야 합니다.

const date = new Date();
date.setTime(date.getTime() - date.getTimezoneOffset()*60*1000)

지금이다date.toISOString()로컬 표준 시간대에 따라 항상 올바른 날짜를 반환합니다.

하지만 잠깐, 더 있어요.만약 우리가 또한 사용하고 있다면,toTimeString()입니다.toTimeString()UTC로 가정하고 변환합니다.그래서 우리는 먼저 추출할 필요가 있습니다.toTimeString()변환하기 전에 변수로 사용할 수 있습니다.

Date()자바스크립트의 클래스는 이것 때문에 일관성이 없으며 이러한 혼란을 피하기 위해 정말로 업데이트되어야 합니다.toISOString()그리고.toTimeString()메소드는 둘 다 표준 시간대와 관련하여 동일한 기본 작업을 수행해야 합니다.

사용한 항목:

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 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;

현재 시간대에서 날짜를 찾고 있는 경우 이러한 답변 중 많은 수가 잠재적으로 잘못된 출력을 제공합니다.

이 기능은 날짜의 표준 시간대 오프셋에 해당하는 날짜를 출력합니다.

const adjustDateToLocalTimeZoneDayString = (date?: Date) => {
    if (!date) {
        return undefined;
    }
    const dateCopy = new Date(date);
    dateCopy.setTime(dateCopy.getTime() - dateCopy.getTimezoneOffset()*60*1000);
    return dateCopy.toISOString().split('T')[0];
};

테스트:

it('return correct day even if timezone is included', () => {
    // assuming the test is running in EDT timezone
    // 11:34pm eastern time would be the next day in GMT
    let result = adjustDateToLocalTimeZoneDayString(new Date('Wed Apr 06 2022 23:34:17 GMT-0400'));
    // Note: This is probably what a person wants, the date in the current timezone
    expect(result).toEqual('2022-04-06');

    // 11:34pm zulu time should be the same
    result = adjustDateToLocalTimeZoneDayString(new Date('Wed Apr 06 2022 23:34:17 GMT-0000'));
    expect(result).toEqual('2022-04-06');

    result = adjustDateToLocalTimeZoneDayString(undefined);
    expect(result).toBeUndefined();
});

오해의 소지가 있는 접근 방식:

답변의 하는 것입니다.ISOString().split()접근 방식, 아래의 출력이 예상되는 것과 어떻게 다른지 주목하십시오.

it('demonstrates how the simple ISOString().split() may be misleading', () => {
    // Note this is the 7th 
    expect(new Date('Wed Apr 06 2022 23:34:17 GMT-0400').toISOString().split('T')[0]).toEqual('2022-04-07');
});

연도 또는 월을 쉽게 얻을 수 있는 방법

let isoDateTime = "2013-03-10T02:00:00Z";
console.log(isoDateTime.split("T")[0]); //2013-03-10

분할 방법 사용

console.log(isoDateTime.split("-")[0]); //2013
console.log(isoDateTime.split("-")[1]); //03

다음은 ISO 8601 타임스탬프를 읽을 수 있는 현지 날짜 및 시간으로 변환하기 위한 짧은 Javascript 코드입니다.

varmyDate = 새 날짜('2013-03-10T02:00:00Z').toString(); console.log(myDate);

출력:2013년 3월 10일 일요일 07:45:00 GMT+0545 (네팔 시간)

$209(날짜).형식("YYY-MM-DD")

아래 코드를 사용합니다.그것은 당신에게 유용합니다.

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

언급URL : https://stackoverflow.com/questions/25159330/how-to-convert-an-iso-date-to-the-date-format-yyyy-mm-dd

반응형