νλλ₯Ό κ²μ¬νλλΌλ κΈ°κ° κ΅¬λ¬Έ λΆμμ΄ μ±κ³΅νλμ§ μ¬λΆλ₯Ό νμΈν μ μλ λ°©λ²μ νμ¬ μμ΅λλ€.
λλ λμνλ€. μμμΌλ‘ isValid λ©μλκ° νμν©λλ€.
μ ν¨νμ§ μμ κΈ°κ°μ μμΈλ₯Ό λ°μμμΌμΌ νκ³ μ ν¨νμ§ μμ κΈ°κ°μ νμ¬ μ²λ¦¬λ κ°μ μ¬νμ΄ μλ λ²κ·ΈλΌκ³ μκ°ν©λλ€. λ€μκ³Ό κ°μ κ²½μ°λ₯Ό κ³ λ €νμμμ€.
`var wrong = moment.duration(3,'mintues');`
κ²°κ³Όλ μ΄λ»κ² λ κΉμ? λ¬Έμλ μλͺ»λ μ λ ₯μμ λ°μνλ μΌμ μ μνμ§ μμ΅λλ€.
add()
λ° subtract()
λμ duration
κ° μ¬μ©λλ―λ‘ κ³λ¨μ ν¨κ³Όκ° μμΌλ―λ‘ μ μλμ§ μμ λμλ μμ΅λλ€.
var hmm = moment().subtract(3,'mintues').toDate();
var uhoh = moment().add(3,'mintues').toDate();
μλ ν
μ€νΈμμ μ΄λ€ μΌμ΄ λ°μνλμ§ λ§ν μ μμ΅λλ€. moment
κΈ°κ°μ 0μΌλ‘ μ¬μ©νμ¬ "μ±κ³΅"ν©λλ€.
moment()
κ° μλͺ»λ μ
λ ₯μ λν΄ λ¨μν μμΈλ₯Ό throwνλ€λ©΄ μ΄λ¬ν λ¬Έμ λ μ¦μ μλ³λμμ κ²μ
λλ€. μ‘°μ©ν "μ±κ³΅"νκΈ° λλ¬Έμ ν΄λμ€ Garbage-In, Garbage-Out λ²κ·Έκ° μ§μλμμ΅λλ€.
μ€νκ° μλ κΈ°κ°μ λμμ νμ¬ μ μλμ§ μμμΌλ―λ‘ μλͺ»λ λ¬Έμμ΄μ λν μμΈλ₯Ό throwνκΈ° μμνλ©΄ μ΄μ λ²μ κ³Ό νΈνλ©λλ€.
μ€νκ° μμ μ μλ μ λ’°ν μ μλ λ¬Έμμ΄μ μ¬μ©νλ κ²½μ° λ¬Έμμ΄μ΄ μ ν¨ν κΈ°κ°μ μ€λͺ
νλ λ° μ¬μ©ν μ μλμ§ ν
μ€νΈν λ try/catch
λ₯Ό λͺ
μμ μΌλ‘ μ¬μ©ν μ μμ΅λλ€.
+1 @markstos.
λμ§λ strict
μ΅μ
(λ μ§μ λν μκ° μ체μ κ°μ)μ μ§μνλ κ²μ μ΄λ»μ΅λκΉ? ꡬ문 λΆμμ΄ μ€ν¨ν λ κΈ°κ°μ 0μΌλ‘ λ°ννλ κ²μ λ§€μ° μνν©λλ€.
strict
μ΅μ
μ λ³κ²½νμ§ μλ κ²λ³΄λ€ λ«μ§ λ§ μ ν¨νμ§ μμ λ μ§λ₯Ό 0 κΈ°κ°μΌλ‘ ꡬ문 λΆμνλ κ²μ΄ μ²μμλ μ’μ κΈ°λ³Έ λμμ΄λΌκ³ μκ°νμ§ μμ΅λλ€.
λμ. κ°λ₯ν λ³κ²½μ [email protected]μΌλ‘ λ§ κ°λ₯
λλ¨Έμ§ μκ°κ³Ό λμΌν ν¨ν΄μ μ¬μ©νμ§ μλ μ΄μ λ 무μμ λκΉ? _isValid νλμ isValid() λ©μλκ° μκ³ κ΅¬λ¬Έ λΆμμ΄ μ€ν¨νλ©΄ κΈ°κ°μ μ ν¨νμ§ μμ κ²μΌλ‘ μ€μ ν©λλ€.
μ°Έκ³ λ‘ isValid()κ° μ¬μ©λλ λ€λ₯Έ λ¬Έμνλ μμΉλ λ€μκ³Ό κ°μ΅λλ€.
https://github.com/moment/momentjs.com/search?utf8=%E2%9C%93&q=isValid
μ½λ μΈκΈλ κ΄λ ¨μ΄ μμ§λ§ μ½λκ° μλ λ¬Έμμ λ§ν¬νλ κ²μ μλμ μ΄μμ΅λλ€.
+1
νμ±μ μ±κ³΅ μ¬λΆλ₯Ό μ μ μλ λ₯λ ₯μ΄ λ§€μ° νμν©λλ€.
μ΄μ λ²μ κ³Όμ νΈνμ±μ΄ μ°λ €λλ κ²½μ° μ
λ ₯μ΄ μ¬λ°λ₯΄μ§ μκ³ strict
μΈμκ° μ§μ λ κ²½μ° throwλλ Duration.parse(input: string, strict?: boolean = true): Duration
λ©μλλ₯Ό λμ
ν μ μμ΅λλ€.
μμμ λ°μ΄ν°μ λν΄ λͺ¨λ 0μΈ Durationμ μ»μ λμ νμ¬ λμμ λ§€μ° μ΄μν©λλ€.
+1
κΈ°κ°μ isValid() λ©μλκ° μμΌλ©΄(νμ±μ΄ μ±κ³΅νλμ§ νμΈνκΈ° μν΄) νΈλ¦¬ν©λλ€.
μλ
νμΈμ, Moment 2.18.0 μλ μ΄μ μ§μ μκ°μ λν .isValid
λ©μλκ° μμ΅λλ€. κ·Έλ¬λ κ½€ κ΄λν©λλ€. @markstos @theazureshadow λ° κΈ°ν μ¬μ©μ, μ¬μ©ν΄ λ³΄κ³ μ μ μ¬νμ΄ μμΌλ©΄ μλ €μ£Όμμμ€.
@λ§λ₯΄μνν ,
μ΄κΈ° ν μ€νΈλ‘ μμ μμ μ€ νλλ₯Ό 볡μ¬/λΆμ¬λ£κΈ°νμ΅λλ€. μμλλ‘ true λλ falseλ₯Ό λ°ννλ λμ μμΈκ° λ°μν©λλ€(λͺ¨λ©νΈ 2.18.0 ν¬ν¨).
moment.duration(3,'mintues').isValid();
(μμΈλ₯Ό λμ§μ§ μκ³ μ ν¨νμ§ μμ κΈ°κ°μ μμ±νμ§λ§ μ¬μ ν "μ±κ³΅"νμ§λ§ μ ν¨νμ§ νμΈνλ©΄ μμΈκ° λ°μν©λλ€! )
μμ§ μ λ°©λ²μ λν λ¬Έμκ° μλ κ²μΌλ‘ 보μ΄μ§λ§ μ΄κ²μ΄ μλλ μ©λκ° μλ μλ μμ΅λλ€.
@markstos 2.18.0μ΄ μλ Momentjs.com μ μ½μμμ λ¬Έμ μμ΄ ν΄λΉ μ½λλ₯Ό λ°©κΈ μ€ννμ΅λλ€. μμΈν λ΄μ©μ μμλ³ΌκΉμ?
λΆμ μ² μκ° ν리기 λλ¬Έμ ν΄λΉ μ½λκ° μ ν¨νμ§ μμ μ μμ΅λλ€.
2017λ 3μ 21μΌ μ€ν 2μ 35λΆμ "Maggie Pint" [email protected]μ΄ λ€μκ³Ό κ°μ΄ μΌμ΅λλ€.
@markstos https://github.com/markstos λ°©κΈ ν΄λΉ μ½λλ₯Ό μ€ννμ΅λλ€.
2.18.0μ΄ μλ Momentjs.comμ μ½μμλ λ¬Έμ κ° μμ΅λλ€. μ°λ¦¬κ° μ»μ μ μμ΅λκΉ?
κ·Έκ²μ λν μμΈν λ΄μ©μ?β
λΉμ μ΄ μΈκΈλμκΈ° λλ¬Έμ μ΄κ²μ λ°λ κ²μ λλ€.
μ΄ μ΄λ©μΌμ μ§μ λ΅μ₯νκ³ GitHubμμ νμΈνμΈμ.
https://github.com/moment/moment/issues/1805#issuecomment-288176838 λλ μμκ±°
μ€λ λ
https://github.com/notifications/unsubscribe-auth/ACbGmWIf24KlRs8oiS2wTn206iJNMod7ks5roBhfgaJpZM4CRuVM
.
κΈ°κ°μ 무ν¨λ‘ν΄μΌνλ μ΄μ λ₯Ό μ @marwahaha @maggiepint, "λΆ"μ λ§μΆ€λ²μ λλ€.
@markstos Momentjs.com μ μ½μμμλ ν΄λΉ μμΈλ₯Ό μ¬νν μ μμ΅λλ€. (μ§κΈμ 2.18.1μ λλ€.) isValidλ₯Ό νΈμΆν λ μ¬μ ν μμΈλ₯Ό μ¬νν μ μλ€λ©΄ λ μμΈν μ 보λ₯Ό μ»μ μ μμ΅λκΉ?
(λΆλͺ
ν Markλ μ΄ μν©μμ isValid
κ° false
isValid
λ₯Ό λ°ννκΈ°λ₯Ό μνμ§λ§ μ΄λ μμΈμλ λ³κ°μ λ¬Έμ μ
λλ€. κ°μ²΄ μ
λ ₯μΌλ‘ ꡬ문 λΆμ μ ν¨μ±μ μ²λ¦¬νλ λ°©λ²μ΄ 100% λͺ
ννμ§ μμ΅λλ€.)
2.18.1μμλ μμΈλ₯Ό μ¬νν μ μμ΅λλ€. μλ§λ κ·Έκ²μ μλͺ»λ 경보μμ κ²μ λλ€. "isValid()"μ λν΄ "true"λ₯Ό λ°ννλ μ΄λ¬ν μ’ λ₯μ μ ν¨νμ§ μμ κΈ°κ°μ κ°λ @butterflyhug μ κ²°κ³Όλ₯Ό μ¬ν ν μ μμ΅λλ€ .
μ΄ κ²½μ° κ²°κ³Όλ‘ "0λΆ"μ μλͺ» μ ν¨ν μΆλ ₯μΌλ‘ λ°ννλ λμ ꡬ문 λΆμμ΄ μ€ν¨νμ§ μμμΌ ν©λκΉ?
ν΄μΌ νλ κ²μ λ€λ₯Έ μ§λ¬Έμ΄μ§λ§ IIRCκ° νλ μΌμ λ€μκ³Ό κ°μ΄ ν΄μνλ κ²μ
λλ€.
λ¨μ ν΄μ ν
μ΄λΈμμ λ¨μλ₯Ό μ°Ύμ μ μκΈ° λλ¬Έμ κ°μ λ°λ¦¬μ΄λ‘ νμν©λλ€.
무ν¨λΌκ³ ν΄μΌ ν κΉμ? μλ§ IMO.
2017λ 3μ 22μΌ μ€μ 8μ 42λΆμ "Mark Stosberg" [email protected]μ΄ μμ±νμ΅λλ€.
2.18.1μμλ μμΈλ₯Ό μ¬νν μ μμ΅λλ€. μλ§λ κ±°μ§μ΄μμ κ²μ΄λ€.
경보. @butterflyhug https://github.com/butterflyhug 'sλ₯Ό μ¬ν ν μ μμ΅λλ€.
μ΄λ¬ν μ’ λ₯μ μ ν¨νμ§ μμ κΈ°κ°μ΄ "true"λ₯Ό λ°ννλ κ²°κ³Ό
"isValid()".μ΄ κ²½μ° "0λΆ"μ λ°ννλ λμ ꡬ문 λΆμμ΄ μ€ν¨νλ©΄ μ λ©λλ€.
κ²°κ³Όμ μΌλ‘ μλͺ»λ μΆλ ₯?β
λΉμ μ΄ μΈκΈλμκΈ° λλ¬Έμ μ΄κ²μ λ°λ κ²μ λλ€.
μ΄ μ΄λ©μΌμ μ§μ λ΅μ₯νκ³ GitHubμμ νμΈνμΈμ.
https://github.com/moment/moment/issues/1805#issuecomment-288440827 λλ μμκ±°
μ€λ λ
https://github.com/notifications/unsubscribe-auth/AFxi0nZAz8gwAJM8fVx5rYPyIWjeEfHMks5roUF4gaJpZM4CRuVM
.
μ¬κΈ°μ λ²κ·Έκ° μλ κ² κ°μ΅λλ€.
λ¬Έμμ΄μ΄ μ ν¨νκ³ "κΈ°κ°" 맡μ νμλλ€κ³ κ°μ ν©λλ€. λ¬Έμμ΄μ΄ μ€μ ν μ μλ μ ν¨ν κ°μΈμ§ νμΈνκΈ° μν΄ μ¬κΈ°μ κ²μ¬λ₯Ό μΆκ°νλ κ² κ°μ΅λλ€. κ·Έλ μ§ μμ κ²½μ° _isValid:false
μ΄ λμμ νμ€ isValid
λ°©λ²κ³Ό μΌμΉν©λλ€.
moment({'mintues': 3}).isValid()
> true
μ΄κ²μ μμ€λ normalizeObjectUnits
https://github.com/moment/moment/blob/497f918515ae6ab900f008f19523b1e4ae5e2450/src/lib/units/aliases.js#L14 -L29μ
λλ€. κ²).
@maggiepint @ichernev μ΄ λμμ λ³κ²½ν΄μΌ νλμ? 곧 λΈλ μ΄νΉ 릴리μ¦λ₯Ό ν μμ μ λλ€...
'3 mintues'λ₯Ό '0 minutes'λ‘ λ³ννκ³ κ²°κ³Όλ₯Ό "valid"λ‘ μ μΈνλ κ²μ λ²κ·Έμ λλ€. μ΄λ₯Ό μμ νκΈ° μν λΈλ μ΄νΉ 체μΈμ§μΌ μ μμ§λ§ μ¬μ ν λ²κ·Έ μμ μ λλ€.
μ΄ μ ν¨μ± κ²μ¬ λμμ΄ μ΄μμ μ΄μ§ μλ€λ λ° λμνμ§λ§ μ΄κ²μ΄ λ°λμ λ²κ·Έ λΌλ λ°μλ λμνμ§ μμ΅λλ€.
moment({'minutes': 3, '$cacheKey': 92619502}).isValid()
μ κ°μ κ²μ ꡬ문 λΆμνλ κ²½μ°λ₯Ό κ³ λ €νμμμ€. λλ κ·Έ ꡬ문 λΆμμ μ ν¨ν μκ°μΌλ‘ νκ°νλ μ¬μ©μκ° μμ κ²μΌλ‘ κ°λ ₯ν κΈ°λνλ©°, μ΄ μμ μ κ·νκ° μμ±ν λ²κ·Έ μ¬μ΄μ μμΉμ μΈ μ°¨μ΄κ° μλ€κ³ λ΄
λλ€.
μ°λ¦¬κ° λ
Όμνκ³ μλ APIλ moment
μμ±μλ₯Ό μν "κ°μ²΄ νμ"μ΄λ©° μ¬κΈ°μ λ¬Έμνλμ΄ μμ΅λλ€.
http://momentjs.com/docs/#/parsing/object/
λ¬Έμλ νμ¬ μ μ μκ±°λ μΆκ° μΈμλ₯Ό μ λ¬νλ μ²λ¦¬μ λν΄ μΉ¨λ¬΅νκ³ μμ΅λλ€.
μ§κΈ μ¬κΈ°μμ Momentμ λμμ "Garbage In, Garbage out"μΌλ‘ μ€λͺ ν μ μμ΅λλ€. κ°λΉμ§ μ λ ₯μ μλμΌλ‘ μλ½λκ³ κ²°κ³Όλ "κ°λΉμ§ μμ"μ λλ€. μ² μκ° μλͺ»λ λ μ§λ λ€λ₯Έ λ μ§λ‘ λ³νλκ³ μ ν¨ν κ²μΌλ‘ κ°μ£Όλ©λλ€!
μ΄λ¬ν μ λ°μ΄νΈλ₯Ό ν΅ν΄ κ°λ°μλ κ°λ₯ν ν 빨리 μμ μ΄ μ€μλ₯Ό νμμ μ μ μμ΅λλ€.
Momentκ° κ³μν΄μ "Garbage In"μ μ ν¨ν κ²μΌλ‘ λ°μλ€μ΄λ ν κ°λ°μμκ²λ κ³μν΄μ μν΄κ° λ κ²μ΄λ©° μ¬μ©μλ κΉ¨μ§ λ μ§κ° "μ ν¨"νλ€κ³ Momentκ° μλͺ» λ³΄κ³ νκ² λ©λλ€.
μ΄ κ°μ μ¬νμ "μ€λ¨" λ³κ²½ν λ§ν κ°μΉκ° μλ κ² κ°μ΅λλ€.
λλ μ΄κ²μ λ¬Όλ Έμ΅λλ€. moment().subtract('1 day')
... μ΄κ²μ μ§μ μκ°μ νννλ μ ν¨ν λ°©λ²μ΄ μλλλ€. κ·Έλλ .subtract(0)
μ κ°μ κ²μΌλ‘ κΈ°λνμ§λ μμ΅λλ€. IMO, μ΄ κ²½μ° κ°μ₯ λλΌμ΄ μΌμ λμ§λ κ²μ
λλ€.
@johnvh μ μ μΌλ‘ λμν©λλ€.
κ·Έκ²μ΄ "κΈ°κ°μ νννλ μ ν¨ν λ°©λ²"μ΄ μλλΌλ κ²μ μκ³ μμ§λ§ μ΄μ¨λ κ·Έ μ½λλ₯Ό μμ±ν©λκΉ? λΉμ μ 무μμ κΈ°λν©λκΉ? λλ κ·Έκ²μ΄ momentjs μμ±μκ° μ 곡νλ νλ₯ν λ¬Έμμμ μ§μ μκ°μ νννλ μ ν¨ν λ°©λ²μ΄ μλλΌλ κ²μ μμλλ€κ³ κ°μ ν©λλ€.
2017λ 4μ 25μΌ 08:29μ Mark Stosberg [email protected] μ λ€μκ³Ό κ°μ΄ μΌμ΅λλ€.
@johnvh μ μ μΌλ‘ λμν©λλ€.
β
μ΄ μ€λ λμ κ°μ νκΈ° λλ¬Έμ μ΄ λ©μμ§λ₯Ό λ°κ³ μμ΅λλ€.
μ΄ μ΄λ©μΌμ μ§μ λ΅μ₯νκ±°λ GitHubμμ 보거λ μ€λ λλ₯Ό μμκ±°νμΈμ.
@simonfox κ°λ°μλ μΈκ°μ λλ€. μ°λ¦¬λ μ€μλ₯Ό ν©λλ€. μ΄κ²μ΄ μ°λ¦¬ μ½λ κΈ°λ°μ μ λ°μ΄ ν μ€νΈμΈ μ΄μ μ λλ€. Moment λ¬Έμλ /is/ μ°μνμ§λ§ APIλ₯Ό μ¬λ°λ₯΄κ² κΈ°μ΅νκ³ λ¬Έμλ₯Ό μ°Έμ‘°ν νμκ° μλ€κ³ μκ°νλ©΄ λμμ΄ λμ§ μμ΅λλ€. κ·Έλ κΈ° λλ¬Έμ μλͺ»λ μ λ ₯μ κΉ¨μ§ "μ ν¨ν" μ λ ₯μΌλ‘ μλ λ³ννλ λμ νλ₯ν λ¬ΈμλΏλ§ μλλΌ μλͺ»λ μ λ ₯μ μ€ν¨νλ μ½λλ μμΌλ©΄ λμμ΄ λ©λλ€. @johnvh κ° μ½λκ°
@markstos μ νν. 100% λμν©λλ€.
μ΄κ²μ μΆμ ν΄μΌ νλ λ²κ·Έμμ΅λλ€. λ¬Όλ‘ λ¬΄ν¨μμ μλ©΄μλ κ·Έλ κ² μ°μ§λ μμμ΅λλ€. μκ° μ‘°μ λ°©λ²μ΄ μ§μλλ μλͺ μμ λ§€μ° μμ μ£Όμμ μ΄κΈ° λλ¬Έμ μ³μ κ²μ²λΌ 보μ λλ€. μ°λ¦¬λ λν μμ°μ΄λ₯Ό μ§μ μκ°μΌλ‘ λ³ννκΈ° μν΄ μΈκ° κ°κ²© μ μ¬μ©νλ λμΌν νλ‘μ νΈμμ μμ λ₯Ό μ¬μ©ν©λλ€. κ·Έλμ μ°λ¦¬λ λ€μκ³Ό κ°μ κ²μ κ°μ§ κ²μ λλ€:
moment().subtract('1 day');
agenda.processEvery('1 day');
νμλ μλν λλ‘ μλνμ§λ§ μ μλ μλνμ§ μμ΅λλ€. μ μκ° μμΈλ₯Ό μΌμΌμΌ°λ€λ©΄ μ°λ¦¬μ μ€μλ₯Ό κ²½κ³ νμ κ²μ λλ€.
λν Moment /has/ isValid() λ©μλκ° κ°μ μ ν¨νκ±°λ 무ν¨λ‘ κ²μ¦νλ€λ κ²μ μλ―Έν©λλ€. μ ν¨νμ§ μμ κ°μ΄ μ ν¨ν κ²μΌλ‘ λΆλ₯λλ κ²½μ° isValid()
λ©μλκ° λ¬Έμνλ λλ‘ μλνμ§ μλ κ²μΌλ‘ 보μ
λλ€.
μλ νμΈμ, μ°λ¦¬λ μ΄ λΆμΌμ λͺ¨λ PRμ κ²ν νκ³ μΆμ΅λλ€!
μ΄ λ²κ·Έ λλ μ΄μ μ μ¬ν λ¬Έμ κ° λ°μνμ΅λλ€. Moment 2.18.1μ μ¬μ©νμ¬ moment.duration('3', 'minutes').asMinutes()
λ₯Ό μ€ννλ©΄ κ²°κ³Όκ° 0μ΄ λ©λλ€. 3μ λ°ννκ±°λ μμΈλ₯Ό throwν΄μΌ νλ€κ³ μκ°ν©λλ€. μ΅μν moment.duration('3', 'minutes').isValid()
λ false
λ°νν΄μΌ ν©λλ€.
Momentκ° μ§κΈ νλνλ λ°©μμ μ¬κΈ° μ¬λ¬ μ¬λλ€μ΄ μΈκΈνλ―μ΄ κ°μ§ λ° μ§λ¨νκΈ° μ΄λ €μΈ μ μλ λ²κ·Έλ₯Ό μ λ°νμ¬ λ§μ λ¬Έμ λ₯Ό μΌμΌν¬ μ μμ΅λλ€.
μ΄ λ¬Έμ κ° ν΄κ²°λμμ΅λκΉ?
@TomJSmith λΉ λ₯Έ ν μ€νΈλ λ²κ·Έκ° μ¬μ ν μ‘΄μ¬ν¨μ 보μ¬μ€λλ€. μ΄ μ½λ:
moment().subtract('1 day');
"μ±κ³΅"νκ³ μμλλ‘ ν루 λμ 0μΌμ λΊλλ€. κ²°κ³Ό λ μ§μ .isValid()
λ₯Ό νΈμΆνκ³ κ²°κ³Όκ° μ ν¨νμ§ μμ λ κ²°κ³Όκ° μ ν¨ν¨μ λνλ΄λ true
μλ΅μ λ€μ λ°μ μ μμ΅λλ€.
νμ¬ λμμ μΌλΆ μ¬μ© μ¬λ‘μμ λμ κ²°κ³Όλ₯Ό μ΄λν μ μμΌλ©° κ²½κ³ μ ν¨κ» λͺ ννκ² λ¬Έμνλμ΄μΌ ν©λλ€.
μ¬μ© μ¬λ‘
보쑴 κΈ°κ°μ κΈ°μ€μΌλ‘ 리μμ€λ₯Ό μμ νκ³ μΆμ΅λλ€.
const duration = moment.duration('invalid');
const currentDate = moment();
const removeBeforeDate = moment().subtract(duration);
console.log(`currentDate : ${currentDate}`);
console.log(`removeBeforeDate : ${removeBeforeDate}`);
κ²°κ³Ό:
currentDate : Fri Apr 13 2018 13:15:04 GMT+0200
removeBeforeDate : Fri Apr 13 2018 13:15:04 GMT+0200
κ²°κ³Ό:
νμ¬ λ μ§κΉμ§μ λͺ¨λ 리μμ€κ° μμ λ©λλ€...
μ§κΈκΉμ§ ꡬ문 λΆμ ν κ°μ ν μ€νΈνλ κ²½μ° μ΄ λ¬Έμ λ₯Ό ν΄κ²°ν μ μλ μ μΌν λ°©λ²μ λ€μκ³Ό κ°μ΅λλ€.
const duration = moment.duration('invalid');
if (duration.toISOString() === 'P0D') {
// throw an Error
}
μ, μ΄ λ²κ·Έλ λμκ³ 2014λ λΆν° μ΄λ € μμ΅λλ€. μ΄κ²μ "date-fns" νλ‘μ νΈκ° μ λλ‘ λ κ²μ λλ€. μλͺ»λ μ λ ₯μ΄ μλͺ»λ κ²½μ° μ€μ λ‘ μλ €μ€λλ€. https://date-fns.org/ λΆννλ date-fnsλ μκ°λ λ³νμ μ²λ¦¬νμ§ μμ§λ§ μΈλΆ λΌμ΄λΈλ¬λ¦¬λ₯Ό μ¬μ©νμ¬ μ΄λ₯Ό μ²λ¦¬νλ λ°©λ²μ΄ μμ μ μμ΅λλ€.
Moment νλ‘μ νΈκ° μ΄ λ¬Έμ λ₯Ό ν΄κ²°νλ €λ©΄ κ°λΉμ§ μ λ ₯μ μλ½νκ³ μ ν¨ν λ μ§λ‘ μ²λ¦¬νλ κ²μ μ€λ¨ν΄μΌ ν©λλ€. μ΄κ²μ΄ λ λμ λμμ²λΌ 보μ΄μ§λ§ κΈ°μ μ μΌλ‘λ "μννλ λμ" λ³κ²½μ΄λ―λ‘ λ³κ²½μ λν μ νμ΄ μλ κ² κ°μ΅λλ€. κ·Έλ¬λ νλ‘μ νΈκ° μ§λ κ±°μ 4λ λμ μ‘°μΉλ₯Ό μ·¨νμ§ μμλ€λ μ μ κ°μν λ λλ 곧 μμ μ κΈ°λνμ§ μμ κ²μ λλ€.
μ΄μ λν μ λ°μ΄νΈκ° μμ΅λκΉ?
moment 2.23.0
λ₯Ό μ¬μ©νλ©΄ μλͺ»λ ISO8601 λ¬Έμμ΄μμ μ§μ μκ°μ μμ±νλ €κ³ ν λ isValid()
ν¨μλ true
λ°νν©λλ€.
μμ:
const mom = moment.duration('asdf')
console.log(mom.isValid()) // This returns true, expected would be false
μ’ μ§μ¦λλ€μ. μμ νμ λͺ©μ ν¨λ°° isValid()
μ κΈ°λ₯ Duration
κ²½μ°λΌλ,μ΄ μ€λΈμ νΈ (μ isValid()
λ°ν false
μκ° μ¬μ§μ΄ μλͺ»λ ν΄μ μκΈ° λλ¬Έμ μ
λ ₯?)
@robbiecloset μ λ°μ΄νΈλ 4μμ λ§μ§λ§ κ²μλ¬Ό μ΄νλ‘ "date-fns" νλ‘μ νΈκ° μκ°λ μ§μμμ λ μ’μμ‘μ΅λλ€. μ΄μ μ΄λ₯Ό λκΈ° μν "date-fns-timezone" λ° "date-fns-tz" νλ‘μ νΈκ° μμ΅λλ€.
μ νμ΄ κ°λ₯νλ€λ©΄ μ¬μ©μ κ³ λ €νκ² μ΅λλ€.
λλ moment.duration(value).toISOString() === value
, κ·Έ κ°μ ꡬμ±μμ μ½μ΅λλ€.
λλ moment.duration(value).toISOString() === valueλ₯Ό μ¬μ©ν©λλ€. κ·Έ κ°μ ꡬμ±μμ μ½μ΅λλ€.
@bors-ltd λ΄ μκ°μ λ¬Έμ μ μΌλΆλ λμΌν μΈμ½λ© κ°μ μμ±νλ λ κ°μ λμ½λ©ν μ μλ€λ κ²μ λλ€.
μ: moment.duration('PT0M0S').toISOString() === moment.duration('PT0S').toISOString()
.
ν μ€νΈλ₯Ό 보면 μ ν¨νμ§ μμ κ°μ΄ μ€μ λ‘ μ¬μκ³Ό λ³κ°μΈ κ²μ²λΌ 보μ λλ€.
https://github.com/moment/moment/blob/2.24.0/src/test/moment/duration.js#L419 -L420
ISO μ§μ μκ° νμ€κ³Ό μΌμΉνμ§ μλ ν¨ν΄μ "0"μ΄λ‘ ν μ€νΈλκ³ μμ΅λλ€.
μλ
νμΈμ, μ°λ¦¬λ isValid()
λ©μλμ λμΌν λ¬Έμ κ° μμκ³ κ²°κ΅ μλμΌλ‘ μννμ΅λλ€.
const isValidDuration = duration => {
return !!duration.match(
/^(-?)P(?=\d|T\d)(?:(\d+)Y)?(?:(\d+)M)?(?:(\d+)([DW]))?(?:T(?:(\d+)H)?(?:(\d+)M)?(?:(\d+(?:\.\d+)?)S)?)?$/
);
};
λκ΅°κ°λ₯Ό λμΈ μ μκΈ°λ₯Ό λ°λλλ€.
https://momentjs.com/docs/#/ -project-status/ μ°Έμ‘°
λͺ¨λ ν λ‘ μ κ°μ¬λ립λλ€.
ν΄ν€ μμ μ isValid λ©μλλ₯Ό λ°μ΄ν° λΆλΆμ ν©μ΄ > 0(λλ μ μ΄λ μ ν¨νμ§ μμ κ°λ₯μ±μ΄ μμ)μμ 보μ₯νλ λ©μλλ‘ λ체νλ κ²μ λλ€.
κ°μ₯ μ μ©ν λκΈ
μ΄μ λν μ λ°μ΄νΈκ° μμ΅λκΉ?
moment 2.23.0
λ₯Ό μ¬μ©νλ©΄ μλͺ»λ ISO8601 λ¬Έμμ΄μμ μ§μ μκ°μ μμ±νλ €κ³ ν λisValid()
ν¨μλtrue
λ°νν©λλ€.μμ:
μ’ μ§μ¦λλ€μ. μμ νμ λͺ©μ ν¨λ°°
isValid()
μ κΈ°λ₯Duration
κ²½μ°λΌλ,μ΄ μ€λΈμ νΈ (μisValid()
λ°νfalse
μκ° μ¬μ§μ΄ μλͺ»λ ν΄μ μκΈ° λλ¬Έμ μ λ ₯?)