Moment: isSameOrAfterλŠ” moment()와 moment()λ₯Ό 비ꡐ할 λ•Œ μž„μ˜μ˜ 좜λ ₯을 μ œκ³΅ν•©λ‹ˆλ‹€.

에 λ§Œλ“  2017λ…„ 02μ›” 21일  Β·  4μ½”λ©˜νŠΈ  Β·  좜처: moment/moment

μ„€λͺ…
κ·Έλž˜μ„œ λ‚˜μ™€ λ™λ£ŒλŠ” μ •μ˜λ˜μ§€ μ•Šμ€ λ³€μˆ˜(기본적으둜 moment(undefined) λ₯Ό μ‚¬μš©ν•œ λ‹€μŒ 이λ₯Ό μƒˆλ‘œμš΄ μˆœκ°„ μΈμŠ€ν„΄μŠ€( moment() 와 λΉ„κ΅ν•˜λ €κ³  ν•˜λŠ” μš°λ¦¬μ— μ˜ν•΄ λ°œμƒν•œ κ²ƒμœΌλ‘œ 판λͺ…λœ μ½”λ“œμ—μ„œ 버그λ₯Ό λ°œκ²¬ν–ˆμŠ΅λ‹ˆλ‹€ moment(undefined) ) isSameOrAfter λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.

κ·Έλž˜μ„œ μš°λ¦¬κ°€ 기본적으둜 μ‚¬μš©ν•œ 것은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

let isSame = moment(undefined).isSameOrAfter(moment());

ν•΄λ‹Ή μ½”λ“œλ₯Ό ν•œλ‘ 번 μ‹€ν–‰ν•˜λ©΄ true λ°˜ν™˜λ˜μ§€λ§Œ 항상 그런 것은 μ•„λ‹™λ‹ˆλ‹€. λ•Œλ•Œλ‘œ false λ°˜ν™˜ν•©λ‹ˆλ‹€. μ‹œκ°„μ΄ μ •μ˜λ˜μ§€ μ•Šμ€ 두 개의 μˆœκ°„ μΈμŠ€ν„΄μŠ€λ₯Ό μ°¨λ‘€λ‘œ μƒμ„±ν•˜λ©΄ λͺ‡ 마이크둜초 차이둜 생성될 수 있기 λ•Œλ¬ΈμΈ 것 κ°™μŠ΅λ‹ˆλ‹€.

λ‹€μŒμ€ Windows 10의 Node v7.1.0κ³Ό Moment.js 2.17.1이 μ„€μΉ˜λœ Chrome/56.0.2924.87μ—μ„œ μ‹€ν–‰ν•œ ν…ŒμŠ€νŠΈμž…λ‹ˆλ‹€.

const moment = require('moment');

function isSameOrAfter() {
    console.log('isSameOrAfter')
    for (let i = 0; i < 1000; i++) {
        let output = moment().isSameOrAfter(moment());
        if (!output) {
            console.log(output, i);
        }
    }
}

function isSame() {
    console.log('isSame')
    for (let i = 0; i < 1000; i++) {
        let output = moment().isSame(moment());
        if (!output) {
            console.log(output, i);
        }
    }
}

function sameExactVariable() {
    console.log('Another test comparing the same exact variable')
    for (let i = 0; i < 1000; i++) {
        const now = moment();
        let output = now.isSame(now);
        if (!output) {
            console.log(output, i);
        }
    }
}

isSameOrAfter();
isSame();
sameExactVariable();

처음 두 ν•¨μˆ˜λŠ” 1000번 쀑 λͺ‡ 번 false 을 κΈ°λ‘ν•˜κ³  μ„Έ 번째 ν•¨μˆ˜λŠ” κΈ°λ‘ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. μ˜ˆμ™Έκ°€ λ°œμƒν•œ κ²½μš°μ—λ§Œ κΈ°λ‘ν•©λ‹ˆλ‹€.

ν™˜κ²½:
2017λ…„ 2μ›” 21일 ν™”μš”μΌ 14:36:06 GMT+0100(μ„œλΆ€ 유럽 ν‘œμ€€μ‹œ)
2017-02-21 14:36:06
-60
Mozilla/5.0(Windows NT 10.0, Win64, x64) AppleWebKit/537.36(Gecko와 같은 KHTML) Chrome/56.0.2924.87 Safari/537.36
2.17.1

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

@imrvshah λ¨Όμ € μ°Έκ³ 

...isSameOrAfter(moment().format('MM-DD-YYYY'))

ν˜„μž¬ μ‹œκ°„μœΌλ‘œ μƒˆ μˆœκ°„μ„ λ§Œλ“€κ³  λ¬Έμžμ—΄λ‘œ ν˜•μ‹ν™”ν•œ λ‹€μŒ ν•΄λ‹Ή λ¬Έμžμ—΄μ„ isSameOrAfter() 에 μ „λ‹¬ν•˜μ—¬ λ‹€μ‹œ ꡬ문 λΆ„μ„ν•©λ‹ˆλ‹€. 당신은 방금 λ‹€μŒκ³Ό 같이 λ§ν–ˆμ–΄μ•Ό ν–ˆμŠ΅λ‹ˆλ‹€.

...isSameOrAfter(moment())

그리고 μˆœκ°„ -> λ¬Έμžμ—΄ -> μˆœκ°„ μž‘μ—…μ„ μ €μž₯ν–ˆμŠ΅λ‹ˆλ‹€. 그것은 훨씬 더 λ‚˜μ€ μ½”λ“œμ΄μ§€λ§Œ 버그λ₯Ό κ³ μΉ  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€. "이봐, 그런 μˆœκ°„μ— λ¬Έμžμ—΄μ„ μ „λ‹¬ν•˜λ©΄ μ•ˆ λœλ‹€"λΌλŠ” μ‚¬μš© 쀑단 κ²½κ³ λ₯Ό λ³Έ 적이 μžˆμŠ΅λ‹ˆκΉŒ? MomentλŠ” moment("1982-05-25") 와 같은 ISO 8601 λ¬Έμžμ—΄μ„ ꡬ문 λΆ„μ„ν•˜λŠ” 방법을 μ•Œκ³  μžˆμŠ΅λ‹ˆλ‹€. λ˜ν•œ moment("05-25-1982", "MM-DD-YYYY") 와 같이 ν˜•μ‹μ΄ μ§€μ •λœ λ¬Έμžμ—΄μ„ ꡬ문 λΆ„μ„ν•˜λŠ” 방법도 μ•Œκ³  μžˆμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ "05-25-1982"와 같은 λ¬Έμžμ—΄μ΄ μ‚¬μš©μžκ°€ λ§ν•˜μ§€ μ•Šκ³  "MM-DD-YYYY"λ₯Ό μ˜λ―Έν•œλ‹€λŠ” 것을 μ•Œμ§€ λͺ»ν•©λ‹ˆλ‹€. λ”°λΌμ„œ λΈŒλΌμš°μ €λŠ” ν•΄λ‹Ή λ¬Έμžμ—΄μ„ Date μƒμ„±μžμ— μ „λ‹¬ν•˜μ—¬ μΆ”μΈ‘ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 즉, μ½”λ“œλŠ” λ‹€μŒκ³Ό 같이 μ–Έλž˜ν•‘λ©λ‹ˆλ‹€.

m.isSameOrAfter("05-25-1982");
m.isSameOrAfter(moment("05-25-1982"))
m.isSameOrAfter(moment(new Date("05-25-1982")))

이λ₯Ό μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” μ΄μœ κ°€ μžˆμŠ΅λ‹ˆλ‹€. λΈŒλΌμš°μ €μ—μ„œ μ‹€ν–‰ 쀑인 결과에 따라 일관성이 μ—†λŠ” κ²°κ³Όλ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€. κ·Έλž˜μ„œ 당신이 κ²ͺκ³ μžˆλŠ” 것은 iOSκ°€ 기본적으둜 ν•΄λ‹Ή ν˜•μ‹μ„ μ§€μ›ν•˜μ§€ μ•ŠλŠ”λ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€. λ‚΄ Safari 개발 μ½˜μ†”μ—μ„œ:

> new Date("05-25-1982")
Invalid Date

그것은 λ‹Ήμ‹ μ—κ²Œ 빈 배열을 λ‚¨κΈ°λŠ” λ‚˜μœ 비ꡐλ₯Ό μ œκ³΅ν–ˆμŠ΅λ‹ˆλ‹€.

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

μ•„λ§ˆ λ‚˜λ„ 같은 μ’…λ₯˜μ˜ λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€. Chrome 및 Android κΈ°κΈ°μ—μ„œλŠ” μ˜ˆμƒλŒ€λ‘œ μž‘λ™ν•˜μ§€λ§Œ iOSμ—μ„œλŠ” μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

let arrDates: Array<String> = []; _.each(Dates, (date) => { if (moment(date).isSameOrAfter(moment().format('MM-DD-YYYY'))) { arrDates.push(date); } });

iOSμ—μ„œλŠ” chrome 및 Androidμ—μ„œ μž‘λ™ν•˜λŠ” λ™μ•ˆ λ°°μ—΄ null이 λ°œμƒν•©λ‹ˆλ‹€.

ν™˜κ²½:

μ½”λ₯΄λ„λ°” CLI: 6.4.0
Ionic ν”„λ ˆμž„μ›Œν¬ 버전: 2.0.0
Ionic CLI 버전: 2.1.18
Ionic μ•± 라이브러리 버전: 2.1.9
Ionic μ•± 슀크립트 버전: 1.0.0
iOS 배포 버전: 1.9.0
ios-sim 버전: 5.0.13
OS: macOS μ‹œμ—λΌ
λ…Έλ“œ 버전: v6.9.2
Xcode 버전: Xcode 8.2.1 λΉŒλ“œ 버전 8C1002

@ErikMartensson

μ‹œκ°„μ„ μ •μ˜ν•˜μ§€ μ•Šκ³  두 개의 μˆœκ°„ μΈμŠ€ν„΄μŠ€λ₯Ό μ°¨λ‘€λ‘œ μƒμ„±ν•˜λ©΄ λͺ‡ 마이크둜초 차이둜 생성될 수 있기 λ•Œλ¬Έμ΄λΌκ³  μƒκ°ν•©λ‹ˆλ‹€.

예, moment() λ˜λŠ” moment(undefined) --동일함--이 μ§€κΈˆ 을 μ˜λ―Έν•©λ‹ˆλ‹€. JS λ‚ μ§œλŠ” λ°€λ¦¬μ΄ˆ 해상도λ₯Ό κ°€μ§€λ―€λ‘œ μ§€κΈˆ 이 λ‹€λ₯Έ λ°€λ¦¬μ΄ˆμΈ 경우(λ•Œλ‘œλŠ” λ°œμƒν•  수 있음) ν•œ λ²ˆμ€ λ‹€λ₯Έ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€. AFAIK, JSλŠ” moment().isSameOrAfter(moment()) 두 개의 moment() ν˜ΈμΆœμ„ ν‰κ°€ν•˜λŠ” μˆœμ„œλ₯Ό μ •μ˜ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ μ–΄μ¨Œλ“  isSameOrAfter() λ₯Ό μ‹€ν–‰ν•˜κΈ° 전에 λΆ„λͺ…νžˆ 두 번째 ν˜ΈμΆœμ„ μˆ˜ν–‰ν•΄μ•Ό ν•˜λ―€λ‘œ μ‹€μ œλ‘œ 두 번째 호좜이 항상 λ¨Όμ € 였면 놀라지 μ•Šμ„ κ²ƒμž…λ‹ˆλ‹€. 즉, μ‹œκ°„ 차이가 μžˆλŠ” 경우 ν…ŒμŠ€νŠΈμ˜ "orAfter" 뢀뢄도 μ‹€νŒ¨ν•©λ‹ˆλ‹€. λ””λ²„κ±°λ‘œ 이λ₯Ό 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

무슨 말을 ν•΄μ•Ό 할지 λͺ¨λ₯΄κ² μ–΄. 이것이 λ°”λ‘œ μœ ν•œ 해상도 λ‚ μ§œ μ‹œκ°„μ΄ μž‘λ™ν•˜λŠ” λ°©μ‹μž…λ‹ˆλ‹€. "μ§€κΈˆ"은 λ§ν•˜λŠ” μ‹œμ μ— 따라 λ‹€λ₯Έ μ‹œκ°„μ„ μ˜λ―Έν•©λ‹ˆλ‹€.

@imrvshah λ¨Όμ € μ°Έκ³ 

...isSameOrAfter(moment().format('MM-DD-YYYY'))

ν˜„μž¬ μ‹œκ°„μœΌλ‘œ μƒˆ μˆœκ°„μ„ λ§Œλ“€κ³  λ¬Έμžμ—΄λ‘œ ν˜•μ‹ν™”ν•œ λ‹€μŒ ν•΄λ‹Ή λ¬Έμžμ—΄μ„ isSameOrAfter() 에 μ „λ‹¬ν•˜μ—¬ λ‹€μ‹œ ꡬ문 λΆ„μ„ν•©λ‹ˆλ‹€. 당신은 방금 λ‹€μŒκ³Ό 같이 λ§ν–ˆμ–΄μ•Ό ν–ˆμŠ΅λ‹ˆλ‹€.

...isSameOrAfter(moment())

그리고 μˆœκ°„ -> λ¬Έμžμ—΄ -> μˆœκ°„ μž‘μ—…μ„ μ €μž₯ν–ˆμŠ΅λ‹ˆλ‹€. 그것은 훨씬 더 λ‚˜μ€ μ½”λ“œμ΄μ§€λ§Œ 버그λ₯Ό κ³ μΉ  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€. "이봐, 그런 μˆœκ°„μ— λ¬Έμžμ—΄μ„ μ „λ‹¬ν•˜λ©΄ μ•ˆ λœλ‹€"λΌλŠ” μ‚¬μš© 쀑단 κ²½κ³ λ₯Ό λ³Έ 적이 μžˆμŠ΅λ‹ˆκΉŒ? MomentλŠ” moment("1982-05-25") 와 같은 ISO 8601 λ¬Έμžμ—΄μ„ ꡬ문 λΆ„μ„ν•˜λŠ” 방법을 μ•Œκ³  μžˆμŠ΅λ‹ˆλ‹€. λ˜ν•œ moment("05-25-1982", "MM-DD-YYYY") 와 같이 ν˜•μ‹μ΄ μ§€μ •λœ λ¬Έμžμ—΄μ„ ꡬ문 λΆ„μ„ν•˜λŠ” 방법도 μ•Œκ³  μžˆμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ "05-25-1982"와 같은 λ¬Έμžμ—΄μ΄ μ‚¬μš©μžκ°€ λ§ν•˜μ§€ μ•Šκ³  "MM-DD-YYYY"λ₯Ό μ˜λ―Έν•œλ‹€λŠ” 것을 μ•Œμ§€ λͺ»ν•©λ‹ˆλ‹€. λ”°λΌμ„œ λΈŒλΌμš°μ €λŠ” ν•΄λ‹Ή λ¬Έμžμ—΄μ„ Date μƒμ„±μžμ— μ „λ‹¬ν•˜μ—¬ μΆ”μΈ‘ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 즉, μ½”λ“œλŠ” λ‹€μŒκ³Ό 같이 μ–Έλž˜ν•‘λ©λ‹ˆλ‹€.

m.isSameOrAfter("05-25-1982");
m.isSameOrAfter(moment("05-25-1982"))
m.isSameOrAfter(moment(new Date("05-25-1982")))

이λ₯Ό μ‚¬μš©ν•˜μ§€ μ•ŠλŠ” μ΄μœ κ°€ μžˆμŠ΅λ‹ˆλ‹€. λΈŒλΌμš°μ €μ—μ„œ μ‹€ν–‰ 쀑인 결과에 따라 일관성이 μ—†λŠ” κ²°κ³Όλ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€. κ·Έλž˜μ„œ 당신이 κ²ͺκ³ μžˆλŠ” 것은 iOSκ°€ 기본적으둜 ν•΄λ‹Ή ν˜•μ‹μ„ μ§€μ›ν•˜μ§€ μ•ŠλŠ”λ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€. λ‚΄ Safari 개발 μ½˜μ†”μ—μ„œ:

> new Date("05-25-1982")
Invalid Date

그것은 λ‹Ήμ‹ μ—κ²Œ 빈 배열을 λ‚¨κΈ°λŠ” λ‚˜μœ 비ꡐλ₯Ό μ œκ³΅ν–ˆμŠ΅λ‹ˆλ‹€.

@icambron

λ‚˜λŠ” λ‹Ήμ‹ μ—κ²Œ λ™μ˜ν•˜κ³  μ½˜μ†”μ—μ„œ λ‚ μ§œ ν˜•μ‹μœΌλ‘œ 인해 μ‚¬μš© 쀑단 경고인 경우λ₯Ό νŒŒμ•…ν•©λ‹ˆλ‹€.

μ—¬λŸ¬ 번 포μž₯ν•˜μ§€ μ•Šκ³  κ·Έλƒ₯ μ‚¬μš©ν•˜λŠ” 것에 λŒ€ν•œ μ˜κ²¬μ„ λ³΄λ‚΄μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€. ...isSameOrAfter(moment())

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