Moment: μ‹œκ°„λŒ€μ— μžμ • DST κ·œμΉ™μ΄μžˆλŠ” 경우 λ‚ μ§œλ₯Ό λ”ν•˜κ±°λ‚˜ 빼도 μ‹œκ°„μ΄ μœ μ§€λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

에 λ§Œλ“  2018λ…„ 08μ›” 22일  Β·  8μ½”λ©˜νŠΈ  Β·  좜처: moment/moment

λ¬Έμ œμ— λŒ€ν•œ μ„€λͺ… :

각 λ‚ μ§œκ°€ 이전 λ‚ μ§œλ³΄λ‹€ 1 일 후인 (μˆœκ°„ λ‚ μ§œ λ°°μ—΄)에 λ‚ μ§œ λ²”μœ„λ₯Ό λ§Œλ“€λ €κ³ ν•©λ‹ˆλ‹€. μ΄λŠ” λͺ¨λ“  μ‚¬μš©μžμ—κ²Œ μ˜ˆμƒλŒ€λ‘œ μž‘λ™ν•˜μ§€λ§Œ UIμ—μ„œ 쀑볡 된 λ‚ μ§œλ₯Όλ³΄κ³ μžˆλŠ” λ―Έκ΅­ / μ‚°ν‹°μ•„κ³  μ‹œκ°„λŒ€μ˜ μ‚¬μš©μžμ— λŒ€ν•œ 버그 λ³΄κ³ μ„œλ₯Ό λ°›μ•˜μŠ΅λ‹ˆλ‹€. λ‚΄κ°€ μ•Œμ•„ μ°¨λ¦° 것은 νŠΉμ • λ‚ μ§œμ— 1 일을 μΆ”κ°€ν•˜λ©΄ μ‹€μ œλ‘œλŠ” 23 μ‹œκ°„ 만 μΆ”κ°€λœλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€.

에 λ‚ μ§œμ™€ 8/11/2018 00:00:00 1 일 개 증가 μ‹œκ°„μ„ μΆ”κ°€ 아메리카 / μ‚°ν‹°μ•„κ³  μ‹œκ°„λŒ€μ—, 8/11/2018 23:00:00 λŒ€μ‹  8/12/2018 00:00:00 .

λ¬Έμ„œλŠ” DSTλ₯Ό κ°€λ‘œ 질러 _ 일을 μ‚¬μš©ν•˜λŠ” λ™μ•ˆ _ 이동할 λ•Œ μ‹œκ°„μ„ λ³΄μ‘΄ν•΄μ•Όν•œλ‹€κ³  μ„€λͺ…ν•˜μ§€λ§Œ μ—¬κΈ°μ„œλŠ” 사싀이 μ•„λ‹Œ 것 κ°™μŠ΅λ‹ˆλ‹€.

일광 μ ˆμ•½ μ‹œκ°„μ„ μ΄ˆκ³Όν•˜λŠ” μ‹œκ°„μ„ μΆ”κ°€ ν•  λ•Œ 염두에 두어야 ν•  νŠΉλ³„ν•œ κ³ λ € 사항도 μžˆμŠ΅λ‹ˆλ‹€. λ…„, μ›”, μ£Ό λ˜λŠ” 일을 μΆ”κ°€ν•˜λŠ” 경우 μ›λž˜ μ‹œκ°„μ€ 항상 μΆ”κ°€ 된 μ‹œκ°„κ³Ό μΌμΉ˜ν•©λ‹ˆλ‹€.

// This code is from moment.js docs https://momentjs.com/docs/#/manipulating/add/
var m = moment(new Date(2011, 2, 12, 5, 0, 0)); // the day before DST in the US
m.hours(); // 5
m.add(1, 'days').hours(); // 5

μž¬ν˜„ 단계

λ‹€μŒ μ½”λ“œμ—μ„œ μ‚¬μš©λ˜λŠ” μ‹œκ°„λŒ€λŠ” μžμ •μ— DST κ·œμΉ™μž…λ‹ˆλ‹€. 이 κ·œμΉ™μ΄ 적용되기 μ „λ‚  μžμ •μ— λ‚ μ§œκ°€ μžˆμŠ΅λ‹ˆλ‹€.이 λ‚ μ§œμ— 1 일을 μΆ”κ°€ν–ˆμœΌλ©° λ‹€μŒ λ‚  μžμ • / 0 μ‹œκ°„ (μ‹œκ°„μ€ μœ μ§€λ˜μ–΄μ•Ό 함)이 될 κ²ƒμœΌλ‘œ μ˜ˆμƒν•˜μ§€λ§Œ μ‹€μ œλ‘œλŠ” 23 μ‹œκ°„.

fmt = d => d.format() + ' ' + d.tz()

x = moment.tz(new Date('08/11/2018 00:00:00'), 'America/Santiago');
fmt(x);                       // "2018-08-11T00:00:00-04:00 America/Santiago"
fmt(x.clone().add(1, 'day')); // "2018-08-11T23:00:00-04:00 America/Santiago" - offset unchanged, added 23 hours not 1 day
fmt(x.clone().add(2, 'day')); // "2018-08-13T00:00:00-03:00 America/Santiago" - original hour preserved now

μ—¬κΈ°μ—μ„œ 24 μ‹œκ°„μ„ μΆ”κ°€ν•˜λ©΄ 25 μ‹œκ°„μ΄ μ¦κ°€ν•˜κ³  μ‹œκ°„λŒ€ μ˜€ν”„μ…‹μ΄ λ³€κ²½λœ 것을 λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€.

fmt = d => d.format() + ' ' + d.tz()

x = moment.tz(new Date('08/11/2018 00:00:00'), 'America/Santiago');
fmt(x);                          // "2018-08-11T00:00:00-04:00 America/Santiago"
fmt(x.clone().add(24, 'hours')); // "2018-08-12T01:00:00-03:00 America/Santiago" - offset changed, added 25 hours
fmt(x.clone().add(48, 'hours')); // "2018-08-13T01:00:00-03:00 America/Santiago"

ν™˜κ²½:

  • 버전 68.0.3440.84 (곡식 λΉŒλ“œ) (64 λΉ„νŠΈ)
  • Mac OSX El Capitan 10.11.6 (15G31)

도움이 될 μˆ˜μžˆλŠ” 기타 정보 :

  • 기계 μ‹œκ°„λŒ€ : λ―Έκ΅­ 동뢀 μ‹œκ°„λŒ€, 일광 μ ˆμ•½ μ‹œκ°„
  • μ‹œκ°„ 및 λ‚ μ§œ μ½”λ“œ μ‹€ν–‰ : 2018 λ…„ 8 μ›” 22 일 μ˜€ν›„ 3:00
  • Moment.js μ›Ή νŽ˜μ΄μ§€μ˜ Chrome Dev Toolsμ—μ„œμ΄ 문제λ₯Ό μž¬ν˜„ν–ˆμŠ΅λ‹ˆλ‹€.

JS λ‚ μ§œ 좜λ ₯

(μƒˆ λ‚ μ§œ ()). toString ()

  • 2018 λ…„ 8 μ›” 22 일 μˆ˜μš”μΌ 15:13:40 GMT-0400 (동뢀 일광 μ ˆμ•½ μ‹œκ°„)

(μƒˆ λ‚ μ§œ ()). toLocaleString ()

  • 2018 λ…„ 8 μ›” 22 일 μ˜€ν›„ 3:13:40

(μƒˆ λ‚ μ§œ ()). getTimezoneOffset ()

  • 240

navigator.userAgent

  • Mozilla / 5.0 (Macintosh, Intel Mac OS X 10_11_6) AppleWebKit / 537.36 (Gecko와 같은 KHTML) Chrome / 68.0.3440.84 Safari / 537.36

moment.version

  • 2.22.2
Bug DST Pending Next Release Up-For-Grabs

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

μ—¬κΈ°μ„œ λ™μž‘μ€ μˆœκ°„ μ‹œκ°„λŒ€ v0.5.4와 v0.5.26 μ‚¬μ΄μ—μ„œ λ³€κ²½λœ κ²ƒμ²˜λŸΌ λ³΄μž…λ‹ˆλ‹€.
이전 λ²„μ „μ—μ„œλŠ” '2018-08-11'에 1 일을 μΆ”κ°€ν•˜λ©΄ 같은 λ‚  μ˜€ν›„ 11 μ‹œκ°€λ©λ‹ˆλ‹€.
μƒˆ λ²„μ „μ—μ„œλŠ” μžμ •μ— '2018-08-12'λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜μ΄ μ‹œκ°„μ€ μ‹€μ œλ‘œ μ‘΄μž¬ν•˜μ§€ μ•ŠμœΌλ©° 1 뢄을 μΆ”κ°€ν•˜λ©΄ 1 μ‹œκ°„μ΄ 거슬러 μ˜¬λΌκ°‘λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜μ΄ DST 변경은 ​​1 μ‹œκ°„μ„ μΆ”κ°€ν•΄μ•Όν–ˆμŠ΅λ‹ˆλ‹€.

이전 버전은이 λ¬Έμ œμ— μ„€λͺ… λœλŒ€λ‘œ μž‘λ™ν•©λ‹ˆλ‹€.
https://jsfiddle.net/eqyvuxht/1/

μƒˆ 버전, λ³€κ²½λœ λ™μž‘,ν•˜μ§€λ§Œ μ—¬μ „νžˆ 잘λͺ»λœ 것 κ°™μ•„μš”?
https://jsfiddle.net/0h6atn4b/4/

ν•΄κ²° 방법은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

function switchZone(m, zone) {
  let arr = [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second()];
  if(zone) {
    return moment.tz(arr, zone);
  }
  return moment(arr);
}

function safeAddDays(m, days) {
   let oldZone = m.tz();
   let utc = switchZone(m, 'UTC');
   utc.add(days, 'days');
   return switchZone(utc, oldZone);
}

λͺ¨λ“  8 λŒ“κΈ€

λ‚˜λŠ” 이것을 유럽 / 둜마 μ‹œκ°„λŒ€μ—μ„œ μž¬ν˜„ν•˜λ €κ³ ν–ˆμ§€λ§Œ λ‹€μŒμ„ μˆ˜ν–‰ ν•  수 μ—†μ—ˆμŠ΅λ‹ˆλ‹€.

유럽 ​​/ 둜마-https: //www.timeanddate.com/time/change/italy/rome

2018 λ…„ 10 μ›” 28 일-일광 μ ˆμ•½ μ‹œκ°„ μ’…λ£Œ
ν˜„μ§€ 일광 μ ˆμ•½ μ‹œκ°„μ΄ 곧 도달 ν•  λ•Œ
2018 λ…„ 10 μ›” 28 일 μΌμš”μΌ μ˜€μ „ 3:00:00 μ‹œκ³„κ°€ 1 μ‹œκ°„ λ’€λ‘œ λ°”λ€λ‹ˆλ‹€.
λŒ€μ‹  ν˜„μ§€ ν‘œμ€€μ‹œλ‘œ 2018 λ…„ 10 μ›” 28 일 μΌμš”μΌ μ˜€μ „ 2:00:00μž…λ‹ˆλ‹€.

이 μ½”λ“œμ—λŠ” 버그가 μ—†μŠ΅λ‹ˆλ‹€.

d => d.format() + ' ' + d.tz()

x = moment.tz(new Date('10/27/2018 00:00:00'), 'Europe/Rome');
fmt(x)                       // "2018-10-27T06:00:00+02:00 Europe/Rome"
fmt(x.clone().add(1, 'day')) // "2018-10-28T06:00:00+01:00 Europe/Rome" - tz offset changed, hour preserved as expected
fmt(x.clone().add(2, 'day')) // "2018-10-29T06:00:00+01:00 Europe/Rome"

TZκ°€ λ³€ν•˜μ§€ 만 μ‹œκ°„μ€ μΌμ •ν•˜κ²Œ μœ μ§€λ©λ‹ˆλ‹€.

볡제 단계에 λ”°λ₯΄λ©΄ μΆ”κ°€ 된 λ‚ μ§œκ°€ DST μ»·μ˜€ν”„μ— μ™„λ²½ν•˜κ²Œ λ„λ‹¬ν•˜λ©΄ μ½”λ“œμ— λΆˆμΌμΉ˜κ°€μžˆλŠ” 것 κ°™μŠ΅λ‹ˆλ‹€. μ‚°ν‹°μ•„κ³  μ‹œκ°„λŒ€μ—μ„œ DST κ·œμΉ™μ€ μžμ •μ— μ‹œκ³„κ°€ ν•œ μ‹œκ°„ λ’€λ‘œ λŒμ•„κ°€λŠ” κ²ƒμž…λ‹ˆλ‹€.

이 κ²½μš°λŠ” DST μ»·μ˜€ν”„κ°€ μžμ • 인 μ‹œκ°„λŒ€μ— ν•΄λ‹Ήν•˜λŠ” κ²ƒμœΌλ‘œ λ³΄μž…λ‹ˆλ‹€. μ™œλƒν•˜λ©΄ μ»·μ˜€ν”„κ°€ μ˜€μ „ 3μ‹œμ— 있고 x λ‚ μ§œκ°€ μ˜€μ „ 3μ‹œμ—μžˆλŠ” μ‹œκ°„λŒ€λ‘œ μž¬ν˜„ ν•  수 μ—†μ—ˆκΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€.

유럽 ​​/ 둜마-https: //www.timeanddate.com/time/change/italy/rome

2018 λ…„ 10 μ›” 28 일-일광 μ ˆμ•½ μ‹œκ°„ μ’…λ£Œ
ν˜„μ§€ 일광 μ ˆμ•½ μ‹œκ°„μ΄ 곧 도달 ν•  λ•Œ
2018 λ…„ 10 μ›” 28 일 μΌμš”μΌ μ˜€μ „ 3:00:00 μ‹œκ³„κ°€ 1 μ‹œκ°„ λ’€λ‘œ λ°”λ€λ‹ˆλ‹€.
λŒ€μ‹  ν˜„μ§€ ν‘œμ€€μ‹œλ‘œ 2018 λ…„ 10 μ›” 28 일 μΌμš”μΌ μ˜€μ „ 2:00:00μž…λ‹ˆλ‹€.

이 μ½”λ“œμ—λŠ” 버그가 μ—†μŠ΅λ‹ˆλ‹€.

fmt = d => d.format() + ' ' + d.tz()

x = moment.tz(new Date('October 27, 2018 03:00:00'), 'Europe/Rome');
fmt(x);                       // "2018-10-27T09:00:00+02:00 Europe/Rome"
fmt(x.clone().add(1, 'days')) // "2018-10-28T09:00:00+01:00 Europe/Rome" - tz offset changed, hour preserved as expected
fmt(x.clone().add(2, 'days')) // "2018-10-29T09:00:00+01:00 Europe/Rome"

이 λ²„κ·ΈλŠ” DST 마감 μ‹œκ°„μ΄ μžμ • 인 μ‹œκ°„λŒ€μ—λ§Œ μ‘΄μž¬ν•˜λ©° λ‚ μ§œκ°€ 마감 μ‹œκ°„μ— μ •ν™•νžˆ λ„μ°©ν•˜λ„λ‘ν•˜λŠ” λ‚ μ§œμ— μ‹œκ°„μ„ μΆ”κ°€ν•˜κ³  μžˆμŒμ„ 확인할 μˆ˜μžˆμ—ˆμŠ΅λ‹ˆλ‹€.

λ―Έκ΅­ / Punta_Arenas - https://www.timeanddate.com/time/zone/chile/punta-arenas
2016 λ…„μ—λŠ”μ΄ μ‹œκ°„λŒ€λ„ μžμ •μ— λ§ˆκ°λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

이 μ½”λ“œμ—λŠ” λ²„κ·Έκ°€μžˆλŠ” 것 κ°™μŠ΅λ‹ˆλ‹€. 각 쀄 뒀에 주석보기

fmt = d => d.format() + ' ' + d.tz()

x = moment.tz(new Date('08/13/2016 00:00:00'), 'America/Punta_Arenas')
fmt(x);                        // "2016-08-13T00:00:00-04:00 America/Punta_Arenas"
fmt(x.clone().add(1, 'days')); // "2016-08-13T23:00:00-04:00 America/Punta_Arenas" - 23 hours added, not 1 day, no tz offset change
fmt(x.clone().add(2, 'days')); // "2016-08-15T00:00:00-03:00 America/Punta_Arenas"

λ™μΌν•œ μ’…λ₯˜μ˜ μ‹œκ°„λŒ€ (μžμ • DST)λ₯Ό λΊ„ λ•Œ μœ μ‚¬ν•œ 문제둜 λ³΄μ΄λŠ” 것을 λ°œκ²¬ν–ˆμŠ΅λ‹ˆλ‹€.

DST μ‹œν”„νŠΈμ—μ„œ λ‚ μ§œλ₯Ό μ •ν™•νžˆ λΉΌλ©΄ ν•΄λ‹Ή λ‚ μ§œμ—λ§Œ μ‹œκ°„μ΄ μœ μ§€λ˜μ§€ μ•Šκ³  λ‚ μ§œκ°€ λ³€κ²½λ©λ‹ˆλ‹€.

fmt = d => d.format() + ' ' + d.tz()

x = moment.tz(new Date('08/13/2018 23:00:00'), 'America/Santiago');
fmt(x);                             // "2018-08-14T00:00:00-03:00 America/Santiago"
fmt(x.clone().subtract(1, 'days')); // "2018-08-13T00:00:00-03:00 America/Santiago"
fmt(x.clone().subtract(2, 'days')); // "2018-08-12T01:00:00-03:00 America/Santiago" - hour not preserved, but date changed
fmt(x.clone().subtract(3, 'days')); // "2018-08-11T00:00:00-04:00 America/Santiago" - original hour preserved now

μ‹œκ°„λŒ€κ°€ America/Asuncion μ‚¬μš©μžλ‘œλΆ€ν„°μ΄ λ¬Έμ œμ— λŒ€ν•œ 또 λ‹€λ₯Έ μ‹ κ³ λ₯Ό λ°›μ•˜μŠ΅λ‹ˆλ‹€.

μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ 버그λ₯Ό μƒμ„±ν•˜λŠ” ν•¨μˆ˜λŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

function generateDayRange(start, end) {
    const days = [];
    let current = start.clone();

    while (current <= end) {
        days.push(current.clone());
        current = current.add(1, 'days');
    }

    return days;
}

이 ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•  λ•Œ ν•˜λ£¨μ˜ μ‹œμž‘μΌ 인 μ‹œμž‘ λ‚ μ§œμ™€ μ‹œκ°„μ΄ 그닀지 μ€‘μš”ν•˜μ§€ μ•Šμ€ μ’…λ£Œ λ‚ μ§œλ₯Ό μ „λ‹¬ν•©λ‹ˆλ‹€.

generateDayRange(startDate.clone().startOf('week'), startDate.clone().endOf('week'));
generateDayRange(getAppDate(startDate), getAppDate(endDate));
generateDayRange(startRange, startRange.clone().add(27, 'days'));

λ¬Έμ œλŠ” μˆœκ°„ λ‚ μ§œ 배열에 쀑볡 된 λ‚ μ§œκ°€ ν¬ν•¨λ˜μ–΄ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ UI에 λ°˜μ˜λœλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€ (달λ ₯μ—λŠ” 쀑볡 된 λ‚ μ§œκ°€ 있음).

λ‚΄ 더 큰 μš°λ €λŠ” λΌμ΄λΈŒλŸ¬λ¦¬κ°€ μ˜ˆμƒλŒ€λ‘œ μž‘λ™ν•˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ— 감지 된 데이터 손싀, 잘λͺ»λœ μš”μ²­ λ“±κ³Ό 같은 λ―Έλ¬˜ν•œ λ¬Έμ œκ°€ λˆˆμ— 띄지 μ•Šμ„ 수 μžˆλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€.

ν˜ΈκΈ°μ‹¬ λ§Žμ€ λ…μžλ“€μ΄μ΄ 문제λ₯Ό ν•΄κ²°ν•  수 μžˆλ„λ‘ μ½”λ“œ 펜 λ“±μ—μ„œ 일련의 ν…ŒμŠ€νŠΈλ₯Ό μˆ˜ν–‰ ν•  κ²ƒμž…λ‹ˆλ‹€.

κ΄€λ ¨ 문제 # 4785μ—λŠ” μ½”λ“œμ— λŒ€ν•œ 링크가 μžˆμŠ΅λ‹ˆλ‹€.
μˆœκ°„ 예 https://runkit.com/embed/1r62d83amq7x
κ·ΈλŸ¬λ‚˜ luxon은 이것을 μ˜¬λ°”λ₯΄κ²Œ μ²˜λ¦¬ν•©λ‹ˆλ‹€.
https://runkit.com/embed/t49achvensqf

졜근 DST λ³€κ²½ 사항이 μžˆλ‹€λŠ” 것을 μ•Œκ³  μžˆμœΌλ―€λ‘œ ν˜„μž¬ develop (μΆœμ‹œλ˜μ§€ μ•ŠμŒ)μ—μžˆλŠ” μ½”λ“œλ₯Ό ν™•μΈν•΄μ•Όν•©λ‹ˆλ‹€. λ˜λŠ” λ‹€μŒ λ¦΄λ¦¬μŠ€κΉŒμ§€ κΈ°λ‹€λ Έλ‹€κ°€ μ—¬μ „νžˆ λ™μΌν•œ 지 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

μ—¬κΈ°μ„œ λ™μž‘μ€ μˆœκ°„ μ‹œκ°„λŒ€ v0.5.4와 v0.5.26 μ‚¬μ΄μ—μ„œ λ³€κ²½λœ κ²ƒμ²˜λŸΌ λ³΄μž…λ‹ˆλ‹€.
이전 λ²„μ „μ—μ„œλŠ” '2018-08-11'에 1 일을 μΆ”κ°€ν•˜λ©΄ 같은 λ‚  μ˜€ν›„ 11 μ‹œκ°€λ©λ‹ˆλ‹€.
μƒˆ λ²„μ „μ—μ„œλŠ” μžμ •μ— '2018-08-12'λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜μ΄ μ‹œκ°„μ€ μ‹€μ œλ‘œ μ‘΄μž¬ν•˜μ§€ μ•ŠμœΌλ©° 1 뢄을 μΆ”κ°€ν•˜λ©΄ 1 μ‹œκ°„μ΄ 거슬러 μ˜¬λΌκ°‘λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜μ΄ DST 변경은 ​​1 μ‹œκ°„μ„ μΆ”κ°€ν•΄μ•Όν–ˆμŠ΅λ‹ˆλ‹€.

이전 버전은이 λ¬Έμ œμ— μ„€λͺ… λœλŒ€λ‘œ μž‘λ™ν•©λ‹ˆλ‹€.
https://jsfiddle.net/eqyvuxht/1/

μƒˆ 버전, λ³€κ²½λœ λ™μž‘,ν•˜μ§€λ§Œ μ—¬μ „νžˆ 잘λͺ»λœ 것 κ°™μ•„μš”?
https://jsfiddle.net/0h6atn4b/4/

ν•΄κ²° 방법은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

function switchZone(m, zone) {
  let arr = [m.year(), m.month(), m.date(), m.hour(), m.minute(), m.second()];
  if(zone) {
    return moment.tz(arr, zone);
  }
  return moment(arr);
}

function safeAddDays(m, days) {
   let oldZone = m.tz();
   let utc = switchZone(m, 'UTC');
   utc.add(days, 'days');
   return switchZone(utc, oldZone);
}

이번 달 (2019 λ…„ 9 μ›”)에 λ‚ μ§œ 선택기λ₯Ό μ‚¬μš©ν•˜λŠ” Santiago μ‚¬μš©μžμ—κ²Œ λ‚ μ§œκ°€ 1, 2, 3, 4, 5, 6, 7, 7, 7, 7 인 달λ ₯이 ν‘œμ‹œλ˜λŠ” λ™μΌν•œ λ¬Έμ œκ°€ λ°œμƒν•©λ‹ˆλ‹€. 9 μ›” ... λ‚΄λΆ€μ μœΌλ‘œ .add(1, 'days') 도 μ‚¬μš©ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. κ·Έλ•ŒκΉŒμ§€ μˆ˜μ •ν•˜μ§€ μ•ŠμœΌλ©΄ 내년에 2020 λ…„ 9 월에 λ‹€μ‹œ λ°œμƒν•  κ²ƒμž…λ‹ˆλ‹€.

@mblandfo ν•΄κ²° 방법도 우리λ₯Ό μœ„ν•΄ νŠΈλ¦­μ„ μˆ˜ν–‰ν•˜λŠ” 것 κ°™μŠ΅λ‹ˆλ‹€. 감사!

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰