Moment: 폴백 없이 κ°’ ꡬ문 뢄석

에 λ§Œλ“  2015λ…„ 07μ›” 10일  Β·  9μ½”λ©˜νŠΈ  Β·  좜처: moment/moment

μž„μ˜μ˜ 값을 moment(value) μ „λ‹¬ν•˜λ©΄ #1407에 따라 μ‚¬μš© 쀑단 κ²½κ³ κ°€ μƒμ„±λ©λ‹ˆλ‹€.

이 ꡬ문 뢄석을 μ‚¬μš©ν•  수 μžˆλŠ” 방법이 μžˆμ§€λ§Œ Date μƒμ„±μžλ‘œ λŒμ•„κ°€μ§€ μ•ŠμœΌλ©΄ 정말 쒋을 κ²ƒμž…λ‹ˆλ‹€. μ§€κΈˆκΉŒμ§€ λ‚΄κ°€ 찾은 μœ μΌν•œ 방법은 μƒλ‹Ήνžˆ μ„œνˆ¬λ₯Έ κ²ƒμž…λ‹ˆλ‹€.

if (moment.isDate(value)) {
    return moment(value);
} else {
    return moment(value, moment.ISO_8601);
}

κ·ΈλŸΌμ—λ„ λΆˆκ΅¬ν•˜κ³  이것은 μ—¬μ „νžˆ ​​ASP.net /Date(1198908717056)/ λ¬Έμžμ—΄μ„ ꡬ문 λΆ„μ„ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

κ°€μž₯ κ°„λ‹¨ν•œ μ˜΅μ…˜μ€ moment(value, true) 두 개의 인수 ν˜•μ‹μœΌλ‘œ strict μ˜΅μ…˜μ„ ν—ˆμš©ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

감사 ν•΄μš”.

Enhancement

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

@SystemParadox 도움이 될 경우λ₯Ό λŒ€λΉ„ν•˜μ—¬ κ·€ν•˜μ™€ λΉ„μŠ·ν•œ λ¬Έμ œκ°€ μžˆμ—ˆκ³  λ‹€μŒκ³Ό 같은 래퍼 κΈ°λŠ₯을 λ§Œλ“€μ—ˆμŠ΅λ‹ˆλ‹€.

function disableNativeDateFallback(config) {
    config._d = new Date(parseFloat('NaN')); // an invalid date
}
function makeMomentWrapper(momentFn) {
    return function() {
        var prevFallback = moment.createFromInputFallback;
        moment.createFromInputFallback = disableNativeDateFallback;
        var result = momentFn.apply(null, arguments);
        moment.createFromInputFallback = prevFallback;
        return result;
    }
};
var momentStrict = makeMomentWrapper(moment);
momentStrict.utc = makeMomentWrapper(moment.utc);

createFromInputFallback μž μ‹œ κ΅μ²΄ν•œ λ‹€μŒ λ‹€λ₯Έ μ½”λ“œμ— 영ν–₯을 λ―ΈμΉ˜μ§€ μ•Šλ„λ‘ λ°˜ν™˜ν•˜κΈ° 전에 λ³΅μ›ν•˜μ—¬ μž‘λ™ν•©λ‹ˆλ‹€. λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ν•  μ€€λΉ„κ°€ 된 λͺ¨λ“  μ½”λ“œλŠ” moment 및 moment.utc λŒ€μ‹  momentStrict 및 momentStrict.utc λ₯Ό μ‚¬μš©ν•  수 있으며 λ‚˜λ¨Έμ§€λŠ” κ·ΈλŒ€λ‘œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

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

λͺ…ν™•νžˆν•˜κΈ° μœ„ν•΄ 엄격 λͺ¨λ“œλ₯Ό μ‚¬μš©ν•˜μ§€ μ•Šκ³  κ²½κ³ λ₯Ό ν‘œμ‹œν•˜μ§€ μ•Šκ³  λŒ€μ²΄λ₯Ό λΉ„ν™œμ„±ν™”ν•˜λŠ” 방법을 μš”κ΅¬ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. λ§žμŠ΅λ‹ˆκΉŒ?

예, moment() μ§€μ›ν•˜λŠ” λͺ¨λ“  것을 μžλ™μœΌλ‘œ ꡬ문 λΆ„μ„ν•˜κ³  μ‹Άμ§€λ§Œ λͺ¨λ‘ μ‹€νŒ¨ν•˜λ©΄ κ²½κ³ λ₯Ό μΈμ‡„ν•˜κ³  Date μƒμ„±μžλ₯Ό μ‚¬μš©ν•˜λŠ” λŒ€μ‹  잘λͺ»λœ λ‚ μ§œλ₯Ό μƒμ„±ν•˜κΈ°λ₯Ό μ›ν•©λ‹ˆλ‹€.

μ‚¬μš©λ˜μ§€ μ•ŠλŠ” Date μƒμ„±μž 폴백이 μ™„μ „νžˆ μ œκ±°λ˜λŠ” ν–₯ν›„ λ²„μ „μ˜ moment λ™μž‘μ„ μ„ μ œμ μœΌλ‘œ μ„ νƒν•˜κ³  μ‹ΆμŠ΅λ‹ˆλ‹€.

엄격 λͺ¨λ“œκ°€ 무엇을 μ˜λ―Έν•˜λŠ”μ§€ μ •ν™•νžˆ λͺ¨λ₯΄κ² μŠ΅λ‹ˆλ‹€. moment(value, 'YYYY-MM-DD') 와 같은 μ •ν™•ν•œ ν˜•μ‹μ„ 전달할 λ•Œλ₯Ό μ˜λ―Έν•©λ‹ˆκΉŒ? κ·Έλ ‡λ‹€λ©΄ 1. μ—„μ²­λ‚˜κ²Œ μž₯ν™©ν•˜κ³  2. moment(value) κ°€ Date μƒμ„±μžμ— μ˜μ‘΄ν•˜κΈ° 전에 ꡬ문 뢄석할 수 μžˆλŠ” λͺ¨λ“  ν˜•μ‹μ΄ μ—¬μ „νžˆ ν¬ν•¨λ˜μ–΄ μžˆμ§€ μ•ŠκΈ° λ•Œλ¬Έμ— 도움이 λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

Strict λͺ¨λ“œλŠ” true λ₯Ό λ§ˆμ§€λ§‰ λ§€κ°œλ³€μˆ˜λ‘œ μ „λ‹¬ν•˜μ—¬ ν™œμ„±ν™”λ©λ‹ˆλ‹€. λ¬Έμ„œμ— μžˆμŠ΅λ‹ˆλ‹€. 기본적으둜 λ¬Έμžμ—΄μ΄ _exactly_ ν˜•μ‹κ³Ό μΌμΉ˜ν•΄μ•Ό 함을 μ˜λ―Έν•©λ‹ˆλ‹€.

moment(String) 직접 μ§€μ›ν•˜λŠ” ν˜•μ‹μ΄ λ¬Έμ„œμ— λ‚˜μ—΄λ˜μ–΄ 있기 λ•Œλ¬Έμ— 이것을 엄격 λͺ¨λ“œμ™€ λ™μΌν•˜κ²Œ μƒκ°ν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€. 즉, moment(String, Boolean) ν•©λ‹ˆλ‹€.

그래 그게 μ’‹κ² λ‹€. 감사 ν•΄μš”.

@SystemParadox 예, μ›ν•˜λŠ” 것이 μ§€μ›λ©λ‹ˆλ‹€. moment.createFromInputFallback(config) μž¬μ •μ˜ν•˜λ©΄ λ©λ‹ˆλ‹€.

moment.createFromInputFallback = function (config) {
    config._d = new Date(NaN);
}

λ‚˜λŠ” 그것이 μ‚¬μ†Œν•˜μ§€ μ•Šλ‹€λŠ” 데 λ™μ˜ν•˜μ§€λ§Œ κ°€λŠ₯ν•©λ‹ˆλ‹€ ;-)

도움이 λ˜μ§€λ§Œ 섀정을 μ „μ—­μ μœΌλ‘œ λ³€κ²½ν•©λ‹ˆλ‹€.

μ½”λ“œλ² μ΄μŠ€λ₯Ό ν•œ λ²ˆμ— ν•œ ν˜ΈμΆœμ”© μ μ§„μ μœΌλ‘œ λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ν•˜λ €λ©΄ μ–΄λ–»κ²Œ ν•©λ‹ˆκΉŒ?

moment(String, true) λŒ€ν•œ 지원을 μΆ”κ°€ν•  수 μ—†λŠ” μ΄μœ λŠ” λ¬΄μ—‡μž…λ‹ˆκΉŒ?

λ‹€μ‹œ μ—΄λ©΄ ν•΄κ²° 방법이 μžˆμ§€λ§Œ 곡개 API에 이λ₯Ό μ‚¬μš©ν•˜λ©΄ λ‹€μ–‘ν•œ μ‚¬μš© 사둀에 도움이 될 κ²ƒμž…λ‹ˆλ‹€. λ‚΄μž₯ ν˜•μ‹μ— λŒ€ν•œ μœ νš¨μ„± 검사λ₯Ό μš”μ²­ν•˜λŠ” #2535도 κ³ λ €ν•˜μ‹­μ‹œμ˜€.

ν•„μš”ν•œ 것은 moment.JS_DATE μƒμˆ˜μž…λ‹ˆλ‹€. 즉, new Date μž…λ ₯을 μ „λ‹¬ν•˜κ³  https://github.com/moment/moment/issues/1686을 확인

@SystemParadox 도움이 될 경우λ₯Ό λŒ€λΉ„ν•˜μ—¬ κ·€ν•˜μ™€ λΉ„μŠ·ν•œ λ¬Έμ œκ°€ μžˆμ—ˆκ³  λ‹€μŒκ³Ό 같은 래퍼 κΈ°λŠ₯을 λ§Œλ“€μ—ˆμŠ΅λ‹ˆλ‹€.

function disableNativeDateFallback(config) {
    config._d = new Date(parseFloat('NaN')); // an invalid date
}
function makeMomentWrapper(momentFn) {
    return function() {
        var prevFallback = moment.createFromInputFallback;
        moment.createFromInputFallback = disableNativeDateFallback;
        var result = momentFn.apply(null, arguments);
        moment.createFromInputFallback = prevFallback;
        return result;
    }
};
var momentStrict = makeMomentWrapper(moment);
momentStrict.utc = makeMomentWrapper(moment.utc);

createFromInputFallback μž μ‹œ κ΅μ²΄ν•œ λ‹€μŒ λ‹€λ₯Έ μ½”λ“œμ— 영ν–₯을 λ―ΈμΉ˜μ§€ μ•Šλ„λ‘ λ°˜ν™˜ν•˜κΈ° 전에 λ³΅μ›ν•˜μ—¬ μž‘λ™ν•©λ‹ˆλ‹€. λ§ˆμ΄κ·Έλ ˆμ΄μ…˜ν•  μ€€λΉ„κ°€ 된 λͺ¨λ“  μ½”λ“œλŠ” moment 및 moment.utc λŒ€μ‹  momentStrict 및 momentStrict.utc λ₯Ό μ‚¬μš©ν•  수 있으며 λ‚˜λ¨Έμ§€λŠ” κ·ΈλŒ€λ‘œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

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