Moment: endOf('day')λŠ” μžμ •μ— μ‹œμž‘ν•˜μ§€ μ•ŠλŠ” 날에 μ‹€νŒ¨ν•©λ‹ˆλ‹€.

에 λ§Œλ“  2016λ…„ 04μ›” 20일  Β·  15μ½”λ©˜νŠΈ  Β·  좜처: moment/moment

μ€‘νžˆ μ—¬κΈ°λ‹€:

moment("2016-10-16").endOf('day').format("YYYY-MM-DD HH:mm:ss")

λŒ€λΆ€λΆ„μ˜ μ‹œκ°„λŒ€μ—μ„œ "2016-10-16 23:59:59" λ°˜ν™˜ν•©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ λΈŒλΌμ§ˆμ—μ„œλŠ” "2016-10-17 00:59:59" λ°˜ν™˜ν•©λ‹ˆλ‹€. 2016-10-16의 00:00λΆ€ν„° 00:59κΉŒμ§€μ˜ μ‹œκ°„λ§Œ λˆ„λ½λ˜μ—ˆκΈ° λ•Œλ¬Έμ— 이것은 μ˜¬λ°”λ₯΄μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 2016-10-16의 끝은 μ—¬μ „νžˆ ​​같은 λ‚ μ§œ 23:59:59μž…λ‹ˆλ‹€.

이것은 moment-timezoneμœΌλ‘œλ„ μž¬ν˜„ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

moment.tz("2016-10-16","America/Sao_Paulo").endOf('day').format("YYYY-MM-DD HH:mm:ss")

λ¬Έμ œλŠ” endOf λ©”μ„œλ“œμ— μžˆμŠ΅λ‹ˆλ‹€. ν•˜λ£¨μ˜ 끝을 κ³„μ‚°ν•˜κΈ° μœ„ν•΄ μš°λ¦¬λŠ” κ·Έλ‚ μ˜ _start_에 ν•˜λ£¨λ₯Ό λ”ν•œ λ‹€μŒ 1λ°€λ¦¬μ΄ˆλ₯Ό λΊλ‹ˆλ‹€. κ·Έ λ…Όλ¦¬λŠ” ν•˜λ£¨κ°€ μžμ •μ— μ‹œμž‘ν•˜μ§€ μ•Šμ„ λ•Œ 결함이 μžˆμŠ΅λ‹ˆλ‹€. ν•˜λ£¨λ₯Ό μΆ”κ°€ν•˜λŠ” λŒ€μ‹  νŠΉμ • λ‚ μ§œμ˜ μ •ν™•ν•œ κΈ°κ°„ 길이λ₯Ό μΆ”κ°€ν•΄μ•Ό ν•©λ‹ˆλ‹€.

Bug DST

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

이것은 μ›λž˜ μˆœκ°„/μˆœκ°„-μ‹œκ°„λŒ€#327둜 λ³΄κ³ λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

2749λŠ” 관련이 μžˆμ§€λ§Œ μ•½κ°„ λ‹€λ¦…λ‹ˆλ‹€.

ν•˜λ£¨μ˜ μ •ν™•ν•œ μ‹œκ°„μ„ κ³„μ‚°ν•˜λŠ” κ²ƒκ³ΌλŠ” λ°˜λŒ€λ‘œ λ‹€μŒκ³Ό 같이 ν•  μˆ˜λŠ” μ—†μŠ΅λ‹ˆλ‹€.

moment('2016-10-16').startOf('day').add(1, 'day').startOf('day').subtract(1, 'millisecond').format()
"2016-10-16T23:59:59-02:00"

16일에도 ν‘Έμ‹œν•  λ•Œ 15일에도 잘 μž‘λ™ν•©λ‹ˆλ‹€.

moment('2016-10-15').startOf('day').add(1, 'day').startOf('day').subtract(1, 'millisecond').format()
"2016-10-15T23:59:59-03:00"

λ‚΄κ°€ μƒκ°ν•˜μ§€ λͺ»ν•œ 엣지 μΌ€μ΄μŠ€κ°€ μžˆμŠ΅λ‹ˆκΉŒ?

λ‹€λ₯΄κ²Œ ν•˜λ©΄ μ„±λŠ₯μƒμ˜ 이점이 μžˆμ„ 수 μžˆλ‹€κ³  μƒκ°ν•˜μ§€λ§Œ, 읽을 수 μžˆμŠ΅λ‹ˆλ‹€!

흠, 여기에 또 λ‹€λ₯Έ λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€.

moment.tz("2016-10-16","America/Sao_Paulo").startOf('day').add(1,'day').startOf('day').subtract(1,'ms').format()
// "2016-10-16T23:59:59-02:00"  (ok)

moment.tz("2016-10-15","America/Sao_Paulo").startOf('day').add(1,'day').startOf('day').subtract(1,'ms').format()
// "2016-10-14T23:59:59-03:00"  (wrong date)

moment.tz("2016-10-15","America/Sao_Paulo").startOf('day').add(1,'day').format()
// "2016-10-15T23:00:00-03:00"  should have skipped forward to "2016-10-16T01:00:00-02:00"

μ—¬κΈ°μ—μ„œ 전체 λͺ¨ν˜Έν•œ λΈŒλΌμš°μ € λ™μž‘μ„ μ²˜λ¦¬ν•˜κ³  μžˆμŠ΅λ‹ˆκΉŒ? μ•„λ‹ˆλ©΄ λ­”κ°€ 더 μžˆλ‚˜μš”?

Brasillia의 Windows μ‹œκ°„λŒ€κ°€ μžˆλŠ” 크둬:

moment("2016-10-15").startOf('day').format()
"2016-10-15T00:00:00-03:00"
moment("2016-10-15").startOf('day').add(1, 'day').format()
"2016-10-16T01:00:00-02:00"

Moment Timezone을 μ‚¬μš©ν•˜λŠ” λ‚΄ μ‹œκ°„λŒ€μ˜ 크둬:

moment.tz("2016-10-15","America/Sao_Paulo").startOf('day').format()
"2016-10-15T00:00:00-03:00"
moment.tz("2016-10-15","America/Sao_Paulo").startOf('day').add(1, 'day').format()
"2016-10-15T23:00:00-03:00"

λ©‹μžˆλŠ”!

μˆœκ°„ μ‹œκ°„λŒ€μ— λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆκΉŒ? μ œκ°€ κ·Έ μ½”λ“œλ₯Ό 잘 λͺ°λΌμ„œ λ§μ”€λ“œλ¦¬κΈ° μ–΄λ ΅μŠ΅λ‹ˆλ‹€. 첫 λ²ˆμ§Έκ°€ μž‘λ™ν•˜λ©΄ λΈŒλΌμš°μ €μ²˜λŸΌ 보이지 μ•ŠμŠ΅λ‹ˆλ‹€.

λ‚˜λŠ” 이것이 ν•΄λ‹Ή λ‚ μ§œμ— 'μΆ”κ°€'된 경우 μˆœκ°„ μ‹œκ°„λŒ€κ°€ 항상 잘λͺ»λœ λ‚ μ§œλ₯Ό λ‹€μ‹œ ν‘Έμ‹œν•œλ‹€λŠ” μ‚¬μ‹€μ˜ 결과라고 μƒκ°ν•©λ‹ˆλ‹€. μ˜λ„ν•œ 것인지 μš°μ—°ν•œ 것인지 ν™•μ‹€ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

//setting moves forward
moment.tz("2016-10-16T00:00:00","America/Sao_Paulo").format()
"2016-10-16T01:00:00-02:00"
//adding moves backward
moment.tz("2016-10-15T00:00:00","America/Sao_Paulo").add(1, 'day').format()
"2016-10-15T23:00:00-03:00"

//setting moves forward
moment.tz("2016-03-13T02:00:00","America/Chicago").format()
"2016-03-13T03:00:00-05:00"
//adding moves backward
moment.tz("2016-03-12T02:00:00","America/Chicago").add(1, 'day').format()
"2016-03-13T01:00:00-06:00"

//one more time for funzies
moment.tz("2016-03-27T01:00:00","Europe/London").format()
"2016-03-27T02:00:00+01:00"

moment.tz("2016-03-26T01:00:00","Europe/London").add(1, 'day').format()
"2016-03-27T00:00:00Z"

λ‚˜λŠ” 이것이 μ‹œκ°„μ„ 지킬 수 없을 λ•Œ keepTime 섀정을 μ‚¬μš©ν•˜λ €κ³  μ‹œλ„ν•˜λŠ” 것과 관련이 μžˆλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€. λ‚˜λŠ” 이 μ½”λ“œκ°€ μ™œ 그런 것인지 말할 만큼 이 μ½”λ“œλ₯Ό 잘 μ•Œμ§€ λͺ»ν•˜μ§€λ§Œ, 이 μ½”λ“œμ˜ keepTime 호좜이 1이 μ•„λ‹Œ 0이라면 λͺ¨λ“  것이 μ˜ˆμƒλŒ€λ‘œ 진행될 κ²ƒμ΄λΌλŠ” 것을 ν™•μ‹€νžˆ μ•Œκ³  μžˆμŠ΅λ‹ˆλ‹€. λ’€λ‘œ λ―Έλ£¨λŠ” 것은 μ‹œκ°„μ„ μœ μ§€ν•˜κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€. 그리고 μ‹œκ°„μ„ μœ μ§€ν•΄μ•Ό ν•©λ‹ˆλ‹€. 이 엣지 μΌ€μ΄μŠ€μ—μ„œλŠ” νŽ‘ν‚€ν•©λ‹ˆλ‹€.

    moment.updateOffset = function (mom, keepTime) {
        var zone = moment.defaultZone,
            offset;

        if (mom._z === undefined) {
            if (zone && needsOffset(mom) && !mom._isUTC) {
                mom._d = moment.utc(mom._a)._d;
                mom.utc().add(zone.parse(mom), 'minutes');
            }
            mom._z = zone;
        }
        if (mom._z) {
            offset = mom._z.offset(mom);
            if (Math.abs(offset) < 16) {
                offset = offset / 60;
            }
            if (mom.utcOffset !== undefined) {
                mom.utcOffset(-offset, keepTime);
            } else {
                mom.zone(offset, keepTime);
            }
        }
    };

λ‚˜λŠ” μ—¬κΈ°μ—μ„œ 도움이 될 μˆœκ°„ μ‹œκ°„λŒ€μ— λŒ€ν•΄ μΆ©λΆ„νžˆ μ•Œμ§€ λͺ»ν•˜μ§€λ§Œ μ•„λ§ˆλ„ keepTime κ°€ μ‚¬μš©λ˜λŠ” μ΄μœ μ— λŒ€ν•œ 티켓은 μ‘°μ‚¬ν•˜λŠ” λͺ¨λ“  μ‚¬λžŒμ—κ²Œ 도움이 될 κ²ƒμž…λ‹ˆλ‹€: https://github.com/moment/moment-timezone/ 문제/28

https://github.com/moment/moment/pull/1564

이것은 μˆœκ°„μ— 처리 μ˜μ—­μ˜ λ§ˆμ§€λ§‰ 큰 λ³€κ²½μž…λ‹ˆλ‹€. 이 λ¬Έμ œμ™€ 관련이 μžˆλŠ”μ§€ ν™•μ‹€ν•˜μ§€ μ•Šμ§€λ§Œ 도움이 될 κ²ƒμž…λ‹ˆλ‹€.

@maggiepint μ„€λͺ… μ’€ μžˆλ‚˜μš”?

항상 잘λͺ»λœ λ‚ μ§œλ₯Ό λ’€λ‘œ ν‘Έμ‹œν•©λ‹ˆλ‹€.

λΆ€ν’ˆ. λ‚΄ 말은 -- μš°λ¦¬λŠ” μˆœκ°„ μ‹œκ°„λŒ€ 문제λ₯Ό λ…ΈμΆœν•˜λŠ” μ˜ˆκ°€ μžˆμŠ΅λ‹ˆκΉŒ, μ•„λ‹ˆλ©΄ ν•˜λ£¨μ˜ μ‹œμž‘/끝에 DSTλ₯Ό κ°μ§€ν•˜κ³  μ μ ˆν•˜κ²Œ μ²˜λ¦¬ν•˜κΈ° μœ„ν•΄ μˆœκ°„μ— 슀마트 μ½”λ“œκ°€ ν•„μš”ν•©λ‹ˆλ‹€. 두 λ²ˆμ§ΈλŠ” μ€‘κ°„μ—μ„œ μ‰¬μ›€μž…λ‹ˆλ‹€. moment-tz와 moment 사이λ₯Ό μ§€λ‚˜λŠ” μ˜μ—­μ„ λ‹€μ‹œ λ¦¬νŒ©ν† λ§ν•΄μ•Ό ν•œλ‹€λ©΄ 지μ˜₯μž…λ‹ˆλ‹€. 차라리 3.0을 기닀리고 μƒˆ μΈν„°νŽ˜μ΄μŠ€μ— 이 λ¬Έμ œκ°€ μ—†κΈ°λ₯Ό λ°”λžλ‹ˆλ‹€.

@ichernev μ½”λ“œκ°€ μ˜€λŠ˜λ‚ μ˜ λ°©μ‹λŒ€λ‘œλΌλ©΄ 이 ν•œ 가지 λ¬Έμ œμ— 두 가지 λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€. ν•˜λ‚˜λŠ” @mj1856이 μ›λž˜ μ œκΈ°ν•œ λ¬Έμ œμž…λ‹ˆλ‹€. μžμ •μ— μ‹œμž‘ν•˜μ§€ μ•ŠλŠ” 날은 νŽ‘ν‚€ν•œ ν•˜λ£¨ κ°’μœΌλ‘œ λλ‚©λ‹ˆλ‹€. 이것은 μˆœκ°„μ˜ λ¬Έμ œμž…λ‹ˆλ‹€.

λ‹€λ₯Έ ν•˜λ‚˜λŠ” μœ νš¨ν•˜μ§€ μ•Šμ€ λ‚ μ§œκ°€ ν‘œμ‹œλ  λ•Œ ν•΄λ‹Ή μœ νš¨ν•˜μ§€ μ•Šμ€ λ‚ μ§œκ°€ μƒμ„±μžμ—μ„œ μ‚¬μš©λ˜λ©΄ κ·Έ μˆœκ°„ μ‹œκ°„λŒ€κ°€ μ•žμœΌλ‘œ μ΄λ™ν•˜μ§€λ§Œ ν•΄λ‹Ή λ‚ μ§œμ— 'μΆ”κ°€'되면 λ’€λ‘œ μ΄λ™ν•œλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€. 이것은 ν˜„μž¬ μ‹œμ μ΄ μ•„λ‹Œ μˆœκ°„ μ‹œκ°„λŒ€μ˜ λ¬Έμ œμž…λ‹ˆλ‹€. μ‹œκ°„λŒ€ μΈν„°νŽ˜μ΄μŠ€κ°€ μ–΄λ–»κ²Œ λ³€κ²½λ˜λŠ”μ§€ 잘 λͺ¨λ₯΄κ² μŠ΅λ‹ˆλ‹€. 쑰금 생각해봐야 ν•  것 κ°™μŠ΅λ‹ˆλ‹€.

@maggiepint λͺ…μΎŒν•œ μ„€λͺ… κ°μ‚¬ν•©λ‹ˆλ‹€.

λ”°λΌμ„œ μˆœκ°„ 문제λ₯Ό ν•΄κ²°ν•˜λ €λ©΄ endOf('day') κ°€ μ •ν™•ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. ν•˜λ£¨κ°€ 끝날 λ•ŒκΉŒμ§€ "μ‘°μ€€"ν•˜λ©΄ λ©λ‹ˆλ‹€. 00:00이면 μ™„λ£Œν•˜κ³ , 그렇지 μ•ŠμœΌλ©΄ 두 번째 쑰쀀이 00에 λ„λ‹¬ν•˜λ©΄ λ‹€μ‹œ μ‘°μ€€ν•©λ‹ˆλ‹€. 00 그렇지 μ•ŠμœΌλ©΄ 첫 번째 샷을 μ‚¬μš©ν•©λ‹ˆλ‹€. 두 번째 λͺ©ν‘œλŠ” DSTλ₯Ό κ±΄λ„ˆλ›°κ³  ν•œ μ‹œκ°„ 정도 "μ™œκ³‘"되면 도움이 λ©λ‹ˆλ‹€. DST λ•Œλ¬Έμ— ν•˜λ£¨μ˜ 끝이 잘λͺ»λœ μ‹œκ°„μΈ 경우 두 번째 λͺ©ν‘œλŠ” μ†μƒλ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

μš°λ¦¬λŠ” 이 μ•Œκ³ λ¦¬μ¦˜μ„ λͺ¨λ“  endOf , μ•„λ§ˆλ„ startOf 에 μ‚¬μš©ν•΄μ•Ό ν•˜μ§€λ§Œ, ν˜„μž¬ μš°λ¦¬κ°€ ν•˜λŠ” 0으둜 μ„€μ •ν•˜λ©΄ μΆ”λ‘ ν•˜κΈ°κ°€ 더 μ–΄λ ΅μŠ΅λ‹ˆλ‹€.

μ•ˆλ…•ν•˜μ„Έμš” μ—¬λŸ¬λΆ„, 저도 ν˜„μž¬ λ²„μ „μ˜ moment(2.14.1)μ—μ„œ 이 문제의 영ν–₯을 λ°›κ³  μžˆμŠ΅λ‹ˆλ‹€.

이 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ #3716을 μ œμΆœν–ˆμ§€λ§Œ ν˜„μž¬ 트랜슀파일 이유둜 Travis CI에 λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€. 더 빨리 쑰사할 μ˜ˆμ •μž…λ‹ˆλ‹€.

이것도 관련이 μžˆμŠ΅λ‹ˆλ‹€(κΈ°λ³Έ 브라질 λ‘œμΌ€μΌ).

같은 λ‚ μ§œμ˜ μž‘μ—… κ²°κ³Ό:

μˆœκ°„("2017-10-16T00:59:59.999").subtract(1,'일').endOf('일')
=> "2017-10-16T00:59:59.999"

이봐 - λ‚˜λŠ” startOf와 endOf에 λŒ€ν•΄ 이것을 μˆ˜μ •ν•˜λŠ” #4164λ₯Ό 방금 μ œμΆœν–ˆμŠ΅λ‹ˆλ‹€. μš°λ¦¬κ°€ λ§ˆμΉ¨λ‚΄ 이것을 μ•žμœΌλ‘œ λ‚˜μ•„κ°ˆ 수 μžˆλ„λ‘ ν”Όλ“œλ°±μ„ λ°›κ³  μ‹ΆμŠ΅λ‹ˆλ‹€.

@mj1856 , DST edge의 endOf λ¬Έμ œκ°€ ν•΄κ²°λœ 것 κ°™μ•„μ„œ PR을 λ‹«μ•˜μŠ΅λ‹ˆλ‹€. 이것도 κ³ μΉ  수 μžˆμ„κΉŒμš”?

#4164λ₯Ό ν…ŒμŠ€νŠΈν–ˆλŠ”λ° μˆ˜μ •λœ 것 κ°™μŠ΅λ‹ˆλ‹€. 병합을 기닀리고 μžˆμŠ΅λ‹ˆλ‹€.

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