Moment: λˆ„λ½ 된 κΈ°λŠ₯ κΈ°κ°„

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

μ €λŠ” ν”„λ‘œμ νŠΈλ₯Ό 진행 쀑이며 momentjsλŠ” λ‚ μ§œ μ‘°μž‘μ— 정말 μœ μš©ν•˜λ―€λ‘œ κ°μ‚¬ν•©λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄, μš°λ¦¬λŠ” λΉ„ν–‰κΈ° ν‘œλ₯Όμœ„ν•œ μΌμ’…μ˜ 상점을 λ§Œλ“€κ³  μžˆμŠ΅λ‹ˆλ‹€. duration.humanize() ν•¨μˆ˜λŠ” μš°λ¦¬μ—κ²Œ λΆ€μ •ν™• ν•œ λ°©λ²•μž…λ‹ˆλ‹€.

예λ₯Ό λ“€μ–΄ 12:00에 μΆœλ°œν•˜κ³  13:30에 μ°©λ₯™ ν•  λ•Œ. 2 μ‹œκ°„μœΌλ‘œ λ°˜μ˜¬λ¦Όλ©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ μš°λ¦¬λŠ” momentjsμ—μ„œ λˆ„λ½ 된 μΌμ’…μ˜ 세뢄성이 ν•„μš”ν•©λ‹ˆλ‹€.

humanizeλŠ” κ°€μž₯ 높은 κ°’μ—μ„œ μ‹œμž‘ν•˜μ—¬ 1 μˆ˜μ€€μ˜ μ •λ°€λ„λ‘œ 기본값을 μ„€μ •ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

// 1:30
duration.humanize()
2 hour
duration.humanize({precision: 2})
1 hour 30 minutes
duration.humanize({precision: 3})
1 hour 30 minutes 0 seconds

두 번째 λ¬Έμ œλŠ” 숫자 0μ΄μžˆμ„ λ•Œμž…λ‹ˆλ‹€. MomentjsλŠ”μ΄λ₯Ό "λͺ‡ 초"둜 λ²ˆμ—­ν•©λ‹ˆλ‹€. λ‚˜λŠ” 그것이 μ–΄λ–»κ²Œ 달성 될 수 μžˆλŠ”μ§€ 잘 λͺ¨λ₯΄κ² μ§€λ§Œ μ–΄λ–€ μ’…λ₯˜μ˜ μ„œμ‹μ„ κ°–λŠ” 것이 λ©‹μ§ˆ κ²ƒμž…λ‹ˆλ‹€.

// 3 days and 0 minutes
duration.format('D [and] M')
> 3 days and 0 minutes
duration.format('H [and] M')
> 72 hours and 0 minutes
duration.format('H [and] m')
> 72 hours and few minutes

μ΄λ ‡κ²Œν•˜λ©΄ κ°€μž₯ 높은 값이 ν˜•μ‹μ— 맀핑 될 수 μžˆμŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ 1 년이 μžˆμ–΄λ„ ν˜•μ‹μ€ μ˜¬λ°”λ₯΄κ²Œ ν‘œμ‹œν•˜λŠ” 방법을 μ•Œλ €μ€λ‹ˆλ‹€. 맀우 μœ μš©ν•˜κ³  momentjsκ°€ 이미 ν˜„μ§€ν™”λ₯Ό μ²˜λ¦¬ν•˜λŠ” 것이 λ‚˜μ˜λ‹€κ³  λŠλ‚„ λ•Œ μ†μœΌλ‘œν•΄μ•Όν•˜κΈ° λ•Œλ¬Έμ— 컀밋을 λ°€μ–΄ λΆ™μ—¬μ„œ κΈ°μ©λ‹ˆλ‹€.

New Feature

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

2019 년에도이 κΈ°λŠ₯이 ν•„μš”ν•©λ‹ˆλ‹€.

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

이 μš”μ²­μ— +1

@llacroix , 이것에 λŒ€ν•œ ν’€ μš”μ²­μ„ μž‘μ„±ν•˜λŠ” 데 관심이 μžˆμŠ΅λ‹ˆκΉŒ?

λ„€, μ•„λ§ˆ μ‹œκ°„μ„ 내도둝 λ…Έλ ₯ν•˜κ² μŠ΅λ‹ˆλ‹€. momentjs에 μΆ”κ°€ν•˜λ©΄ μž₯기적으둜 저와 λ‹€λ₯Έ μ‚¬λžŒλ“€μ˜ μ‹œκ°„μ„ μ ˆμ•½ ν•  수 μžˆμŠ΅λ‹ˆλ‹€. ν˜„μž¬ 이것은 λ‚΄κ°€ λͺ¨λ“  κ³³μ—μ„œ μΌμ’…μ˜ 엉망을 λ§Œλ“€λ„λ‘ κ°•μš”ν•˜λ©° μ™„λ²½ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. momentjsλ₯Ό μˆ˜μ •ν•˜λŠ” 것이 더 적절 ν•΄ λ³΄μž…λ‹ˆλ‹€.

κ·ΈλŸ¬λ‚˜ μš°λ¦¬λŠ” μ–΄λ–€ μ’…λ₯˜μ˜ ν˜•μ‹μ„ μˆ˜ν–‰ν•΄μ•Όν•˜λŠ”μ§€μ— λŒ€ν•΄ μ’€ 더 λ…Όμ˜ν•΄μ•Ό ν•  κ²ƒμž…λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, 0 값이 ν‘œμ‹œλ˜κ±°λ‚˜ ν‘œμ‹œλ˜μ§€ μ•Šμ•„μ•Όν•©λ‹ˆλ‹€.

4 hours 20 seconds λ˜λŠ” 0 days 4 hours 0 minutes 20 seconds

κ°œμ›”μ€ 365 일, 30 μΌμ΄λ©λ‹ˆλ‹€.

그리고 λ…„, μ›”, μ£Ό, 일, λΆ„, 초 및 밀리 초 μ΄μ™Έμ˜ λ‹€λ₯Έ ν˜•μ‹μ΄ μžˆμ–΄μ•Όν•©λ‹ˆλ‹€.

이것에 λŒ€ν•œ +1
κ·ΈλŸ¬λ‚˜ 예, μ„œμ‹ 지정은 μ—¬κΈ°μ„œ 핡심 λ¬Έμ œμž…λ‹ˆλ‹€. 인간화와 ν˜•μ‹μ€ ν™•μ‹€νžˆ λ‘˜ λ‹€ ν•„μš”ν•©λ‹ˆλ‹€.
인간화 ν–‰λ™μ„μœ„ν•œ λͺ‡ 가지 μ œμ•ˆ :
// 1:30
duration.humanize ();
1 μ‹œκ°„ 30 λΆ„
duration.humanize ({round : "μ‹œκ°„"})
2 μ‹œκ°„
duration.humanize ({round : "minutes"})
1 μ‹œκ°„ 30 λΆ„
duration.humanize ({round : "seconds"})
1 μ‹œκ°„ 30 λΆ„ 0 초

roundκ°€ λͺ…μ‹œ 적으둜 μ •μ˜λ˜μ–΄ μžˆμ§€ μ•Šλ‹€λ©΄ 값이 0이고 그보닀 μž‘μ€ λ‹¨μœ„λŠ” λͺ¨λ‘ μƒλž΅ν•΄μ•Όν•œλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€.

// 1 μ‹œκ°„ 0 λΆ„ 45 초
duration.humanize ()-> 1 μ‹œκ°„
// 1 μ‹œκ°„ 1 λΆ„ 0 초
duration.humanize ()-> 1 μ‹œκ°„ 1 λΆ„
// 1 μ‹œκ°„ 1 λΆ„ 10 초
duration.humanize ()-> 1 μ‹œκ°„ 1 λΆ„ 10 초

λ˜ν•œ λ§ˆμ§€λ§‰ μ‘°μΈμ—λŠ” "and"ꡬ뢄 기호λ₯Ό μ‚¬μš©ν•΄μ•Όν•˜λ©° μ•žμ— 곡백이 μžˆμ–΄μ•Όν•©λ‹ˆλ‹€.
2 κ°œμ›” 6 일 7 μ‹œκ°„ 36 λΆ„

이것이 ν•¨μˆ˜κ°€ 기본적으둜 μž‘λ™ν•΄μ•Όν•œλ‹€κ³  μƒμƒν•˜λŠ” λ°©λ²•μž…λ‹ˆλ‹€.

λ‹€μŒμ€ μ„œλͺ… 및 κ΅¬ν˜„μ— λŒ€ν•œ 제 μ œμ•ˆμž…λ‹ˆλ‹€.

var duration = moment.duration({
    hours : 1,
    minutes : 0,
    seconds : 20,
    milliseconds : 0
});
duration.countdown(); // 1 hour 0 minutes 20 seconds
duration.countdown(1); // 1 hour
duration.countdown(2); // 1 hour and 0 minutes
duration.countdown(3); // 1 hour 0 minutes and 20 seconds

@sylvainpolletvillardκ°€ μ œμ•ˆν–ˆλ“―μ΄, 0 값을 잘라 λ‚΄κΈ°μœ„ν•œ 맀개 λ³€μˆ˜λ₯Ό μΆ”κ°€ ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ•„λ§ˆλ„ 이런 κ²ƒμž…λ‹ˆλ‹€.

duration.countdown(3); // 1 hour 0 minutes and 1 second
duration.countdown(3, true); // 1 hour

moment.fromNow(Boolean) 와 같은 접미사에 λŒ€ν•œ 맀개 λ³€μˆ˜λ₯Ό μΆ”κ°€ ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€.

duration.countdown(3); // 1 hour 0 minutes and 1 second ago
duration.countdown(3, null, true); // 1 hour ago

μš°λ¦¬λŠ” 이것을 μ˜μ–΄λ‘œ μ‰½κ²Œ λ§Œλ“€ 수 μžˆμ§€λ§Œ λͺ¨λ“  λ‹€λ₯Έ μ–Έμ–΄λ‘œμ΄ λͺ¨λ“  λ¬Έμžμ—΄μ„ μ˜¬λ°”λ₯΄κ²Œ μ—°κ²°ν•˜λŠ” 것은 맀우 κΉŒλ‹€λ‘œμšΈ κ²ƒμž…λ‹ˆλ‹€.

μ–Έμ–΄κ°€ λ¬Έμžμ—΄μ„ μ—°κ²°ν•˜κΈ° μœ„ν•΄ μ½œλ°±μ„ λ§Œλ“€μ–΄μ•Ό ν•  κ²ƒμž…λ‹ˆλ‹€. 이 κ·œμΉ™μ€ μ•„λ§ˆλ„ 맀우 볡작 ν•  κ²ƒμž…λ‹ˆλ‹€ ( 헝가리어 , 당신을보고 μžˆμŠ΅λ‹ˆλ‹€).

이 값을 μ „λ‹¬ν•˜λŠ” κ°€μž₯ 쒋은 방법은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

var keys    = [     "h",        "mm",          "s"],
    values  = [       1,           0,           20],
    strings = ["1 hour", "0 minutes", "20 seconds"];

lang.countdown(keys, values, strings, addSuffix);

그러면 μ˜μ–΄ λ²ˆμ—­μ€ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

lang.countdown = function (keys, values, strings, addSuffix) {
    var i, output = "";

    for (i = 0; i < strings.length; i++) {
        if (i === strings.length - 1 && strings.length > 1) {
            output += "and ";
        }
        output += strings[i] + " ";
    }
    if (addSuffix) {
        output += "ago";
    }
}

λŒ€μ²΄λ‘œ 이것은 33 개의 λ²ˆμ—­ κΈ°λŠ₯κ³Ό 코어에 더 λ§Žμ€ μ½”λ“œλ₯Ό ν•„μš”λ‘œν•˜λŠ” μ—„μ²­λ‚˜κ²Œ λ³΅μž‘ν•œ μΆ”κ°€κ°€λ©λ‹ˆλ‹€. λ˜ν•œ μ–Όλ§ˆλ‚˜ 자주 μ‚¬μš© 될지 λͺ¨λ₯΄κ²  κΈ° λ•Œλ¬Έμ— λ‹€λ₯Έ λͺ¨λ“  μ‚¬λžŒλ“€μ—κ²Œ κ·Έ λͺ¨λ“  λΆ€ν’€μŒμ„ μΆ”κ°€ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

μ•„λ§ˆλ„ 이것이 ν”ŒλŸ¬κ·ΈμΈμœΌλ‘œ μ΄λ™ν•˜λŠ” 것이 κ°€μž₯ μ’‹μ„κΉŒμš”?

κΈ°κ°„ ν˜•μ‹ 지정에 λŒ€ν•œ ν† λ‘ μœΌλ‘œ λŒμ•„κ°€μ„œ 이와 같은 것이 κ°€λŠ₯ν•˜λ©΄ 쒋을 것이라고 μƒκ°ν•©λ‹ˆλ‹€.

moment.duration(9483000).format('d h m s') // 1 day 2 hours 20 minutes 30 seconds  
moment.duration(9483000).format('h m s') // 26 hours 20 minutes 30 seconds 
//etc...  

0 값이 ν‘œμ‹œλ˜μ—ˆλŠ”μ§€ μ—¬λΆ€λ₯Ό κ²°μ •ν•˜κΈ° μœ„ν•΄ format λ©”μ†Œλ“œμ— λΆ€μšΈ 맀개 λ³€μˆ˜λ₯Ό 제곡 ν•  수 μžˆμŠ΅λ‹ˆκΉŒ?

CLDRμ—λŠ” μ—¬λŸ¬ 언어에 μ‚¬μš©ν•  μˆ˜μžˆλŠ” λͺ©λ‘ ν˜•μ‹ 지정 체계와 데이터가 μžˆμŠ΅λ‹ˆλ‹€.ν•˜μ§€λ§Œ λ§Žμ€ μ–Έμ–΄μ—λŠ” μ—¬μ „νžˆ μ‚¬μš©μž 지정 콜백이 ν•„μš”ν•©λ‹ˆλ‹€.

http://cldr.unicode.org/development/development-process/design-proposals/list-formatting

λ‚˜λŠ” 포맷 κΈ°λŠ₯이 μ˜ˆμ˜λ‹€. μ—¬λŸ¬ μ–Έμ–΄μ˜ λ²ˆμ—­μ„ κ΅¬ν˜„ν•˜κΈ° λ•Œλ¬Έμ— μƒλ‹Ήνžˆ μ–΄λ €μšΈ 수 μžˆμŠ΅λ‹ˆλ‹€. ν˜•μ‹μ„ μ‚¬μš©ν•˜λŠ” 것은 κ΅¬ν˜„ν•˜κΈ° 맀우 μ‰½μŠ΅λ‹ˆλ‹€.

당신이 μ›ν•œλ‹€κ³  λ§ν•˜μž

moment.duration(9483000).format('d h m s') // 1 day 2 hours 20 minutes and 30 seconds  
// English  => 'd h m [and] s' 1 day 2 hours 20 minutes and 30 seconds
// French   => 'd, h, m [et] s'   1 jour, 2 heures, 20 minutes et 30 secondes
// Russian  => 'd h m [ΠΈ] s'   1 дСнь 2 часа 30 ΠΌΠΈΠ½ΡƒΡ‚ ΠΈ 30 сСкунд

νŠΉλ³„ν•œ μ½œλ°±μ€ ν•„μš”ν•˜μ§€ μ•Šμ§€λ§Œ νŠΉλ³„ν•œ ν˜•μ‹ λ¬Έμžμ—΄ 만 μžˆμœΌλ©΄λ©λ‹ˆλ‹€.

μ œμ•ˆ 된 duration.countdown() 및 duration.countdown(1) λ©”μ†Œλ“œλŠ” μ •ν™•νžˆ λ‚΄κ°€ μ°Ύκ³ μžˆλŠ” κ²ƒμž…λ‹ˆλ‹€ (즉, μ§€κΈˆ λ‚΄ μ½”λ“œμ—μ„œ μˆ˜ν–‰μ€‘μΈ μž‘μ—…).

ν•œνŽΈ, Duration ν”„λ‘œν†  νƒ€μž…μ„ ν™•μž₯ν•˜λŠ” 방법이 μžˆμŠ΅λ‹ˆκΉŒ?

κΈ°κ°„ ν”„λ‘œν†  νƒ€μž…μ„ 톡해 λ…ΈμΆœλ˜λŠ” moment.duration.fn μœ μ‚¬ moment.fn .

μž‘λ…„μ— # 143 / # 192μ—μ„œ λΉ„μŠ·ν•œ μž‘μ—…μ„ ν•΄μ™”μŠ΅λ‹ˆλ‹€. Tim은 ν”ŒλŸ¬κ·ΈμΈμ„ μ œμ•ˆν–ˆμ§€λ§Œ μ‹œκ°„μ΄ 걸리지 μ•Šμ•˜μŠ΅λ‹ˆλ‹€.

μž‘μ—…μ„ μž¬λΆ€νŒ…ν•˜λ €κ³ ν–ˆμŠ΅λ‹ˆλ‹€. λ‚˜λŠ” κΈ°κ°„ 객체 λ“±κ³Ό 같은 μƒˆλ‘œμš΄ κ°œλ…μœΌλ‘œ μ—…λ°μ΄νŠΈν•΄μ•Όν–ˆλ‹€. λ‚˜λŠ”μ΄ ν‹°μΌ“κ³Ό λ‹€λ₯Έ κ²ƒλ“€μ΄μ—ˆλ‹€. 이제 λ‚˜λŠ” 그것이 μ—¬μ „νžˆ ν•„μš”ν•œμ§€, κ·Έλ ‡λ‹€λ©΄ μ–΄λ–»κ²Œ κ΅¬ν˜„ν•΄μ•Όν• μ§€ κ³ λ―Όν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

λ‚˜λŠ” μ‹ λ°œμ„ 밟고 싢지 μ•Šμ•„μ„œ λ‚΄κ°€ λ„μšΈ 수 μžˆλŠ”μ§€ μ•Œκ²Œλ˜μ—ˆμŠ΅λ‹ˆλ‹€. μ§€κΈˆ λˆ„κ°€ κ·Έ 문제λ₯Ό 닀루고 μžˆμŠ΅λ‹ˆκΉŒ?

λ‚΄ μ½”λ“œλŠ” λ‹€μŒκ³Ό 같이 연속 λ‹¨μœ„ 및 λΉ„ 연속 λ‹¨μœ„λ‘œ ν˜•μ‹μ„ 지정할 수 μžˆμŠ΅λ‹ˆλ‹€.

test.equal(moment([2012, 0, 1]).diff([2011, 0, 1], 'years\\y'), "1y");
test.equal(moment([2012, 0, 1]).diff([2011, 0, 1], 'months[m]'), "12m");
test.equal(moment([2016, 0, 20]).diff([2011, 10, 1], 'months [months] days [days]'), "50 months 19 days");
test.equal(moment([2016, 0, 20]).diff([2011, 10, 1], 'years \\y months \\M days \\d'), "4 y 2 M 19 d");
test.equal(moment([2016, 0, 20]).diff([2011, 10, 1], 'years[y] days[d]'), "4y 80d");
test.equal(moment([2016, 0, 20]).diff([2011, 10, 1], 'years [years] weeks [weeks]'), "4 years 11 weeks");
test.equal(moment([2016, 0, 20]).diff([2011, 10, 1], 'years\\y weeks\\w [and] days [days]'), "4y 11w and 3 days");
test.equal(moment([2016, 0, 20]).diff([2011, 10, 1], 'days\\d'), "1541d");

'days years' 와 같이 μˆœμ„œκ°€ λ§žμ§€ μ•ŠλŠ” λ‹¨μœ„λŠ” μ²˜λ¦¬ν•˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€. λ˜ν•œ 0 κ°’ 제거λ₯Ό μ²˜λ¦¬ν•˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€.

정말 λ©‹μ Έ λ³΄μž…λ‹ˆλ‹€. μ •ν™•νžˆ μ œκ°€ λ°”λž¬λ˜ κ²ƒμž…λ‹ˆλ‹€!

이것은 ν™•μ‹€νžˆ λͺ¨λ“  μ‚¬λžŒμ—κ²Œ ν•„μš”ν•œ κΈ°λŠ₯μž…λ‹ˆλ‹€.

이게 ν•„μš”ν•΄!

μ—¬λŸ¬λΆ„ 쀑 μΌλΆ€μ—κ²ŒλŠ” μž„μ‹œ 방편으둜 λͺ¨λ©˜νŠΈμ—μ„œ 직접 countdown.js λ₯Ό μ‚¬μš©ν•  μˆ˜μžˆλŠ” κ°„λ‹¨ν•œ ν”ŒλŸ¬κ·ΈμΈμ„ λ§Œλ“€μ—ˆμŠ΅λ‹ˆλ‹€.

moment("1982-5-25").countdown().toString(); // => '30 years, 10 months, 14 days, 2 hours, 23 minutes, and 50 seconds'

μ‚¬μš©ν•  λ‹¨μœ„ 및 정밀도와 같은 μ „λ‹¬ν•˜λŠ” λͺ¨λ“  카운트 λ‹€μš΄ μ˜΅μ…˜μ„ ν†΅κ³Όν•©λ‹ˆλ‹€ (카운트 λ‹€μš΄ λ¬Έμ„œλ₯Ό λ³Ό 수 있음). μ–΄μ¨Œλ“  ν”ŒλŸ¬κ·ΈμΈμ€ 여기에 μžˆμŠ΅λ‹ˆλ‹€ : https://github.com/icambron/moment-countdown

@icambron countribuiton에 κ°μ‚¬λ“œλ¦½λ‹ˆλ‹€! 맀우 λ„μ›€μ΄λ©λ‹ˆλ‹€!

λ‚˜λŠ” moment.jsλ₯Ό μ‚¬μš©ν•˜κΈ° μ‹œμž‘ν–ˆκ³ μ΄ μ •ν™•ν•œ 문제λ₯Ό κ½€ 빨리 λ°œκ²¬ν–ˆμŠ΅λ‹ˆλ‹€. 이 문제λ₯Ό ν•΄κ²°ν•˜λŠ” 데 μ‚¬μš©ν•œ μ½”λ“œμž…λ‹ˆλ‹€.

moment.duration.fn.format = function (input) {
    var output = input;
    var milliseconds = this.asMilliseconds();
    var totalMilliseconds = 0;
    var replaceRegexps = {
        years: /Y(?!Y)/g,
        months: /M(?!M)/g,
        weeks: /W(?!W)/g,
        days: /D(?!D)/g,
        hours: /H(?!H)/g,
        minutes: /m(?!m)/g,
        seconds: /s(?!s)/g,
        milliseconds: /S(?!S)/g
    }
    var matchRegexps = {
        years: /Y/g,
        months: /M/g,
        weeks: /W/g,
        days: /D/g,
        hours: /H/g,
        minutes: /m/g,
        seconds: /s/g,
        milliseconds: /S/g
    }
    for (var r in replaceRegexps) {
        if (replaceRegexps[r].test(output)) {
            var as = 'as'+r.charAt(0).toUpperCase() + r.slice(1);
            var value = new String(Math.floor(moment.duration(milliseconds - totalMilliseconds)[as]()));
            var replacements = output.match(matchRegexps[r]).length - value.length;
            output = output.replace(replaceRegexps[r], value);

            while (replacements > 0 && replaceRegexps[r].test(output)) {
                output = output.replace(replaceRegexps[r], '0');
                replacements--;
            }
            output = output.replace(matchRegexps[r], '');

            var temp = {};
            temp[r] = value;
            totalMilliseconds += moment.duration(temp).asMilliseconds();
        }
    }
    return output;
}

이 μ½”λ“œμ˜ νŠΉμ§• :

  • http://momentjs.com/docs/#/displaying/format/에 μ„€λͺ… 된 것과 λ™μΌν•œ ν˜•μ‹ 문자λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€
  • κΈ°κ°„μ˜ 속성에 λŒ€ν•΄ μ›ν•˜λŠ”λ§ŒνΌ μ„ ν–‰ 0을 좜λ ₯ν•©λ‹ˆλ‹€. 예 :
d=moment.duration({hours:1,minutes:1,seconds:1});
d.format('HHH:mm:ss');
"001:01:01"
  • μž…λ ₯ ν…œν”Œλ¦Ώμ—μ„œ 문자λ₯Ό μƒλž΅ν•˜κ³  후속 문자의 값이 일반적인 μ΅œλŒ€ 값보닀 큰 경우 이전 문자λ₯Ό μΆ”κ°€ν•©λ‹ˆλ‹€. 예 :
d=moment.duration({days:1, hours:1, minutes: 1});
d.format('H:mm:ss');
"25:01:00"

κ°€λŠ₯ν•œ 문제 :

  • asXxxxμ—μ„œ 얻은 값에 Math.floorλ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€. 예 :
Math.floor(moment.duration(milliseconds)).asHours()
  • 예λ₯Ό λ“€μ–΄ 기간에 λΆ„ λ˜λŠ” 초 값이 μžˆμ§€λ§Œ ν˜•μ‹ ν•¨μˆ˜μ— μ‹œκ°„μ„ μš”μ²­ν•˜λ©΄ λ°˜μ˜¬λ¦Όλ˜μ§€ μ•Šκ³  항상 반 λ‚΄λ¦Όλ©λ‹ˆλ‹€.

이 μš”μ²­μ— λŒ€ν•œ +1

개인적으둜 .humanize() λŒ€ν•œ 멋진 κ·œμΉ™μ„ μ‚¬μš©ν•˜κ±°λ‚˜ .countdown() λ©”μ„œλ“œλ₯Ό λ§Œλ“œλŠ” 것보닀 .format() λ©”μ„œλ“œλ₯Ό κ΅¬ν˜„ν•˜λŠ” 것이 더 합리적이라고 μƒκ°ν•©λ‹ˆλ‹€. 문제의 95 %λŠ” .format() 둜 ν•΄κ²°ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

λ‚˜λŠ” .humanize() κ°€ 더 λ§Žμ€ 정밀도λ₯Ό μ œκ³΅ν•΄μ•Όν•˜μ§€λ§Œ λ‹€λ₯Έ κΈ°λŠ₯μ΄μ–΄μ•Όν•œλ‹€λŠ” 데 λ™μ˜ν•©λ‹ˆλ‹€.

포맷 기간은 ν•„μˆ˜μž…λ‹ˆλ‹€. ν˜•μ‹ν™” 된 λ¬Έμžμ—΄λ‘œ 초λ₯Ό μ‰½κ²Œ λ²ˆμ—­ ν•  수 μžˆμ–΄μ•Όν•©λ‹ˆλ‹€.

λ‚˜λŠ” stralytic μ½”λ“œλ₯Ό μ‹œλ„ν•˜μ§€λ§Œ :
d = moment.duration ({일 : 1, μ‹œκ°„ : 1, λΆ„ : 1}); d.format ( 'DH : mm : ss');
"1-215 : 01 : 00"

format() +1

μ‚¬μš© μ‚¬λ‘€λ‘œ 타이밍 μ‹œν—˜ (3 μ‹œκ°„)에 μ‚¬μš©λ˜λŠ” 기간은 hh : mm (: ss) λ“±μœΌλ‘œ μ‰½κ²Œ ν˜•μ‹μ„ 지정할 수 있으며 훨씬 더 μ‰½μŠ΅λ‹ˆλ‹€. μ§€κΈˆ λ‹Ήμž₯은 바닐라 jsμ—μ„œ 손을 댈 λ•ŒκΉŒμ§€ Momentμ—μ„œ λ˜‘κ°™μ€ μž‘μ—…μ„ μˆ˜ν–‰ν•˜λŠ” 것이 맀우 μ–΄λ ΅μŠ΅λ‹ˆλ‹€. :)

+1 κΈ°κ°„ ν˜•μ‹!

λ‚΄κ°€ μ‚¬μš©ν•œ λΉ λ₯Έ μˆ˜μ •μ€ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

moment.duration.fn.format = function(){
    str = ""
    if(this.days() > 1) str = str + Math.floor(this.days()) + "d "
    if(this.hours() > 1) str = str + Math.floor(this.hours()) + "h "
    if(this.minutes() > 1) str = str + Math.floor(this.minutes()) + "m "
    if(this.seconds() > 1) str = str + Math.floor(this.seconds()) + "s "
    return str
    }

: +1 : duration.format()

: +1 : duration.format ()도

이 PR의 μƒνƒœλŠ” λ¬΄μ—‡μž…λ‹ˆκΉŒ? 멀리 λ–¨μ–΄μ Έ μžˆμŠ΅λ‹ˆκΉŒ?

Code Bounty

λ‚˜λŠ” ν•œλ™μ•ˆ 자리λ₯Ό λΉ„ μ› μŠ΅λ‹ˆλ‹€.이 문제λ₯Ό λ§Œλ“  지 거의 1 λ…„μ΄λ˜μ—ˆμŠ΅λ‹ˆλ‹€. λ‚˜λŠ” 그것을 μ‹œλ„ ν•  것이닀. λ‚˜λŠ” μˆœκ°„ jsλ₯Ό ν¬ν¬ν•˜κ³  ν…ŒμŠ€νŠΈ / κ²€ν†  ν•  κ²ƒμ΄μžˆλŠ” μ¦‰μ‹œμ΄ 문제λ₯Ό μ—…λ°μ΄νŠΈ ν•  κ²ƒμž…λ‹ˆλ‹€. 이틀 μ•ˆμ— μ‹œν—˜μ„ μ€€λΉ„ν•΄μ•Όν•©λ‹ˆλ‹€. λ”°λΌμ„œ 이틀 내에 무언가가 ν‘œμ‹œ 될 κ°€λŠ₯성은 거의 μ—†μŠ΅λ‹ˆλ‹€. 즉, λ‚΄κ°€ μž‘μ—… ν•  κ²ƒμž…λ‹ˆλ‹€.

@llacroix κ°μ‚¬ν•©λ‹ˆλ‹€ :)

: +1 : duration.format ()

 moment.duration.fn.format = function (zeros, twoDigit) {
 var hours = this.hours (), minutes = this.minutes (), 초 = this.seconds ();
 var displayFormat = '', zerosFormat = twoDigit? '00': '0', padLeft = twoDigit? -2 : -1;
 if (μ‹œκ°„ || 0) {
 displayFormat + = (zerosFormat + μ‹œκ°„) .slice (padLeft) + 'h';
 }
 if (λΆ„ || 0) {
 displayFormat + = (zerosFormat + λΆ„) .slice (padLeft) + 'min';
 }
 if (초 || 0) {
 displayFormat + = (zerosFormat + 초) .slice (padLeft) + 's';
 }
 return $ .trim (displayFormat);
 }

+1 κΈ°κ°„ ν˜•μ‹.

+1 duration.format

+1 duration.format

μ €λŠ” 포괄적 인 κΈ°κ°„ ν˜•μ‹μ΄ 정말 ν•„μš”ν–ˆκΈ° λ•Œλ¬Έμ— 여기와 StackOverflowμ—μ„œ μŠ€λ ˆλ“œλ₯Ό κ²€ν† ν•˜κ³  였늘 μžλ¦¬μ— 앉아 κ΅¬ν˜„ν–ˆμŠ΅λ‹ˆλ‹€.

λ‚˜λŠ” μ—¬μ „νžˆ λͺ‡ 가지 μ‚¬μ†Œν•œ μ„ΈλΆ€ 사항을 톡해 μž‘μ—…ν•˜κ³  μžˆμ§€λ§Œ 핡심은 μ™„λ£Œλ˜κ³  κ²¬κ³ ν•©λ‹ˆλ‹€. λ©°μΉ  μ•ˆμ— 여기에 μ½”λ“œμ™€ 사양 및 μ˜ˆμ œκ°€ κ²Œμ‹œ 될 κ²ƒμž…λ‹ˆλ‹€. κΈ°λ³Έ μ•„μ΄λ””μ–΄λŠ” μž„μ˜μ˜ 기간을 κ°€μ§ˆ 수 있으며 예λ₯Ό λ“€μ–΄ μˆœκ°„ λ‚ μ§œ ν˜•μ‹ λ¬Έμžμ—΄κ³Ό μœ μ‚¬ν•œ λ¬Έμžμ—΄λ‘œ ν˜•μ‹μ„ 지정할 수 μžˆλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€. duration.format ( "d [d] hh : mm : ss")-> 2 일 03:47:24

λ˜ν•œ μ΅œμ’… 값에 μž„μ˜μ˜ μ†Œμˆ˜ 정밀도λ₯Ό μ •μ˜ ν•  수 μžˆμŠ΅λ‹ˆλ‹€. duration.format ( "h [hrs]", 3)-> 42.384 μ‹œκ°„

duration.format의 경우 +1

λ‚΄ moment.duration.format ν”ŒλŸ¬κ·ΈμΈμ„ κ²Œμ‹œν–ˆμŠ΅λ‹ˆλ‹€.
https://github.com/jsmreese/moment-duration-format

ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€μ™€ λͺ‡ 가지 μ˜ˆμ œκ°€ ν”„λ‘œμ νŠΈμ— μžˆμŠ΅λ‹ˆλ‹€.
λ‚΄ ν”ŒλŸ¬κ·ΈμΈμ€ lodash 및 underscore.string에 μ˜μ‘΄ν•©λ‹ˆλ‹€.

+1 duration.format ()

이 티켓은 1 λ…„ 전에 κ°œλ΄‰λ˜μ—ˆμŠ΅λ‹ˆλ‹€. λ‚˜λŠ” 그것이 κ΅¬ν˜„ 될 것 같지 μ•Šλ‹€.

@ Maxwell2022 일주일 정도 전에 moment.duration.format ν”ŒλŸ¬κ·ΈμΈμ„ κ²Œμ‹œν–ˆμŠ΅λ‹ˆλ‹€.
https://github.com/jsmreese/moment-duration-format

그게 λ‹Ήμ‹ μ—κ²Œ νš¨κ³Όκ°€ μžˆμŠ΅λ‹ˆκΉŒ?

이것도 +1ν•©λ‹ˆλ‹€. 포괄적 인 λΌμ΄λΈŒλŸ¬λ¦¬μ—μ„œ 맀우 λˆˆμ— λ„λŠ” λˆ„λ½ 인 것 κ°™μŠ΅λ‹ˆλ‹€.

https://github.com/rmm5t/jquery-timeago λŠ” Momentμ—μ„œμ΄λ₯Ό κ΅¬ν˜„ν•˜λŠ” 방법에 λŒ€ν•œ 쒋은 ν…œν”Œλ¦Ώ 일 수 μžˆμŠ΅λ‹ˆλ‹€.

@schmod μ§€λ‚œλ‹¬ moment.duration.format ν”ŒλŸ¬κ·ΈμΈμ„ κ²Œμ‹œν–ˆμŠ΅λ‹ˆλ‹€.
https://github.com/jsmreese/moment-duration-format

μ‚¬μš© μ‚¬λ‘€μ—μ„œ μž‘λ™ν•©λ‹ˆκΉŒ?

: +1 :!

이것은 λ‚˜λ₯Ό μœ„ν•΄ 일할 κ²ƒμž…λ‹ˆλ‹€ (κ·ΈλŸ¬λ‚˜> 24 μ‹œκ°„ λ™μ•ˆμ€ μ•„λ‹™λ‹ˆλ‹€) :

moment.duration.fn.format = function(format) {
  return moment(this.as('milliseconds')).format(format);
}

@jsmreese κ·€ν•˜μ˜ https://github.com/jsmreese/moment-duration-format 이 LoDash 에 μ˜μ‘΄ν•˜λŠ” 것은 μ§„μ •ν•œ λŒ€λ‹¨ν•œ μ‘΄μž¬μž…λ‹ˆλ‹€. μš°λ¦¬λŠ” 이미 밑쀄을 μ‚¬μš©ν•˜κ³  있으며이 μž‘μ€ κΈ°λŠ₯을 μœ„ν•΄ LoDash둜 μ „ν™˜ν•˜λŠ” 것을 μ •λ‹Ήν™” ν•  수 μ—†μŠ΅λ‹ˆλ‹€. ν”ŒλŸ¬κ·ΈμΈμ΄ 두 가지 λͺ¨λ‘μ— 독립적이라면 λ§Žμ€ μ‚¬λžŒλ“€μ—κ²Œ 더 μ‹€μš©μ μΈ μ˜΅μ…˜μ΄ 될 것이라고 μƒκ°ν•©λ‹ˆλ‹€.

@wleeper μ ˆλŒ€μ μœΌλ‘œ λ™μ˜ν•©λ‹ˆλ‹€.

λ‚΄ ν™˜κ²½μ€ LoDash와 Underscore.String을 μ‚¬μš©ν•˜κΈ° λ•Œλ¬Έμ— ν•΄λ‹Ή 라이브러리의 λ©”μ†Œλ“œλ₯Ό μ‚¬μš©ν–ˆμŠ΅λ‹ˆλ‹€. λͺ‡ 달 전에 첫 번째 버전이 ν•„μš”ν–ˆκ³ μ΄λ₯Ό κ΅¬ν˜„ν•˜κ³  μ‹Άμ—ˆμŠ΅λ‹ˆλ‹€.

곧 ν•΄λ‹Ή 쒅속성을 μ œκ±°ν•˜κ² μŠ΅λ‹ˆλ‹€.

@wleeper Underscore 및 LoDashλŠ” μƒν˜Έ ν˜Έν™˜λ©λ‹ˆλ‹€. @jsmreese κ°€

@ chall8908 그게 문제이고 @wleeper κ°€ λ§žμŠ΅λ‹ˆλ‹€. μ €λŠ” Underscore λΉŒλ“œμ˜ 일뢀가 μ•„λ‹Œ LoDash의 κΈ°λŠ₯을 μ‚¬μš©ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

Underscore.String 쒅속성을 μ œκ±°ν–ˆμœΌλ©° Underscore ν˜Έν™˜μ„±μ„ μœ„ν•΄ λ…Έλ ₯ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

moment-duration-format ν”ŒλŸ¬κ·ΈμΈμ΄ μ΄λŸ¬ν•œ 문제 쀑 ν•˜λ‚˜λ₯Ό ν•΄κ²°ν•˜κΈ°λŠ”ν•˜μ§€λ§Œ, λ‘œμΌ€μΌκ°„μ— μž‘λ™ν•˜λŠ” μ ‘κ·Ό 방식이 ν•„μš”ν•˜λ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€ (ν™•μ‹€νžˆ 훨씬 더 μ–΄λ ΅μŠ΅λ‹ˆλ‹€).

μ €λŠ” μš°λ¦¬κ°€ # 1241을 κ΅¬ν˜„ν•˜λŠ” μž‘μ—…μ„ν•΄μ•Όν•œλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€. 이것은 μ‚¬λžŒμ΄ 읽을 μˆ˜μžˆλŠ” λ‚ μ§œ, λ‚ μ§œ, κΈ°κ°„, λ‘œμΌ€μΌ 전체 λͺ©λ‘μ„ λ Œλ”λ§ν•˜λŠ” μΈ‘λ©΄μ—μ„œ λ§Žμ€ 문을 μ—΄ κ²ƒμž…λ‹ˆλ‹€. Momentκ°€ CLDR μ–Έμ–΄ 데이터에 μ•‘μ„ΈμŠ€ ν•  μˆ˜μžˆλŠ” 경우 formatDuration λŠ” κ΅¬ν˜„ν•˜κΈ°κ°€ 맀우 κ°„λ‹¨ν•©λ‹ˆλ‹€.

jQuery의 Globalize λΌμ΄λΈŒλŸ¬λ¦¬λŠ” λ§Žμ€ λ™μΌν•œ 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ λ…Έλ ₯ν•˜κ³  있으며 이듀과 ν˜‘λ ₯ν•˜λŠ” 것이 λ…Όλ¦¬μ μœΌλ‘œ λ³΄μž…λ‹ˆλ‹€. Twitterμ—λŠ” 이미 이런 μ’…λ₯˜μ˜ λ§Žμ€ μž‘μ—…μ„ μˆ˜ν–‰ν•˜λŠ” 맀우 포괄적 인 라이브러리 κ°€ μžˆμŠ΅λ‹ˆλ‹€.

μ’‹μŠ΅λ‹ˆλ‹€. μ—¬κΈ° CLDR μœ„μ— κ΅¬ν˜„ κ°€λŠ₯ν•œ APIκ°€ μžˆμŠ΅λ‹ˆλ‹€. μ–΄λ–»κ²Œ 생각해?

duration:human(bool) // future/past dep/indep
duration:human({
  with(=min+max): 'hours'|'minutes'|'seconds',
  min: 'hours',
  max: 'days',
  float: bool,
  length: "long|short|narrow",
  abs: bool
})
  • min : μ‚¬μš©ν•  μ΅œμ†Œ λ‹¨μœ„λŠ” μ–Όλ§ˆμž…λ‹ˆκΉŒ? min : days (일)λŠ” μ‹œκ°„, λΆ„, 초λ₯Ό λ§ν•˜μ§€ μ•Šκ³  기간이 ν•˜λ£¨λ³΄λ‹€ 짧은 경우 일둜 반올림 함을 μ˜λ―Έν•©λ‹ˆλ‹€.
  • max : μ‚¬μš©ν•  μ΅œλŒ€ λ‹¨μœ„λŠ” μ–Όλ§ˆμž…λ‹ˆκΉŒ? max : days, μ›”κ³Ό 년을 μ‚¬μš©ν•˜μ§€ μ•Šκ³  λŒ€μ‹  ν•΄λ‹Ή 일 수λ₯Ό μ‚¬μš©ν•¨μ„ μ˜λ―Έν•©λ‹ˆλ‹€.
  • 길이 : 토큰 크기 : μ˜μ–΄μ˜ 경우 일 λŒ€ d
  • abs : 미래 / κ³Όκ±° 독립

: +1 : +1

: +1 :

+1 duration.format

+1 duration.format

+1

+1

+1

λ¬΄μ–Έκ°€μ˜ λŸ°νƒ€μž„μ„ ν‘œμ‹œν•˜κ³  μ‹ΆμŠ΅λ‹ˆλ‹€.

+1

https://github.com/jsmreese/moment-duration-format

moment-duration-format 버전 1.2.1이 NPM에 κ²Œμ‹œλ˜μ—ˆμŠ΅λ‹ˆλ‹€.
Node.js와 λΈŒλΌμš°μ € λͺ¨λ‘μ—μ„œ μž‘λ™ν•©λ‹ˆλ‹€.
Lo-Dash λ˜λŠ” Underscore에 μ˜μ‘΄ν•˜μ§€λ§Œ μ΄μ œλŠ” λ‘˜ λ‹€ ν…ŒμŠ€νŠΈλ˜κ³  μž‘λ™ν•©λ‹ˆλ‹€.
μ›λž˜ Underscore.String 쒅속성이 μ œκ±°λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

ν˜„μž¬ Bower νŒ¨ν‚€μ§€ 등둝 / 등둝 μ·¨μ†Œ λ¬Έμ œκ°€ ν•΄κ²°λ˜λŠ” μ¦‰μ‹œμ΄ 버전을 Bower에 κ²Œμ‹œ ν•  κ²ƒμž…λ‹ˆλ‹€.

κΈ°κ°„ ν˜•μ‹μ˜ 경우 +1

이것이 λ„μ„œκ΄€μ˜ μΌλΆ€κ°€λ˜κΈ°λ₯Ό λ°”λžλ‹ˆλ‹€.

+1

+1

+1

: +1 :

duration.format ()의 경우 +1

+1

였 예, 적어도 μ„ ν–‰ 0 κ°’μœΌλ‘œ 좜λ ₯ν•˜κΈ° μœ„ν•΄ moment.duration(3, 'seconds').get('ss') 을 (λ₯Ό) μˆ˜ν–‰ ν•  수 있으렀면 ν™•μ‹€νžˆ μ°Έμ—¬ν•  κ²ƒμž…λ‹ˆλ‹€.

이 μš”μ²­μ˜ μƒνƒœλŠ” λ¬΄μ—‡μž…λ‹ˆκΉŒ? 진전을 이루기 μœ„ν•΄ μ–΄λ–€ 도움이 ν•„μš”ν•©λ‹ˆκΉŒ?

λΏ‘λΏ‘
μ‘΄μž¬ν•©λ‹ˆλ‹€ : https://github.com/jsmreese/moment-duration-format/
Lo-Dash λ˜λŠ” Underscore에 λŒ€ν•œ μ˜μ‘΄μ„±μ— μ‹ κ²½ 쓰지 μ•ŠλŠ”λ‹€λ©΄ μ›ν•˜λŠ” 것을 ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
μ–Έμ  κ°€λŠ” κ·Έ μ˜μ‘΄μ„±μ„ 제거 ν•  μ‹œκ°„μ„ ν•  κ²ƒμž…λ‹ˆλ‹€ ...

humanize λ•Œ https://github.com/jsmreese/moment-duration-format/ 이 stdlib에 μ—†λ‹€λŠ” 사싀에 λ†€λžμŠ΅λ‹ˆλ‹€. λ‚˜λŠ” 그것이 μ΅œμ†Œν•œμ˜ λ†€λΌμ›€μ˜ 원칙을 μœ„λ°˜ν•œλ‹€κ³  λŠλ‚λ‹ˆλ‹€. μ΅œμ†Œν•œ κ°„λ‹¨ν•œ 숫자 ν˜•μ‹μœΌλ‘œ λŒμ•„κ°ˆ 수 μžˆμ–΄μ•Όν•©λ‹ˆλ‹€.

moment.duration(123, "minutes").format();
// "2:03:00"

μ§€κΈˆμ€ λ‹€μŒμ„ μ‚¬μš©ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

moment.utc(moment.duration(300 * 1000).asMilliseconds()).format("HH:mm:ss.SSS")
// 00:05:00.000

moments.js의 μΌλΆ€λ‘œ 곧보고 μ‹Άμ–΄μš”

+1

+1

κ΄€λ ¨ λ©”λͺ¨μ—μ„œ duration.toString() λŠ” [Object object] λ°˜ν™˜ν•©λ‹ˆλ‹€. humanize() λ°˜ν™˜ν•΄μ•Όν•˜μ§€ μ•ŠμŠ΅λ‹ˆκΉŒ?

+1은 이것에 λŒ€ν•΄ 더 λ§Žμ€ μ œμ–΄κΆŒμ„ κ°–κΈ°λ₯Ό μ›ν•©λ‹ˆλ‹€.

+1

Lo-Dash λ˜λŠ” Underscore에 λŒ€ν•œ 이전 쒅속성을 μ œκ±°ν•˜λŠ” Moment Duration Format 1.3.0을 방금 κ²Œμ‹œν–ˆμŠ΅λ‹ˆλ‹€. 이제 μœ μΌν•œ 쒅속성은 Moment.js μžμ²΄μž…λ‹ˆλ‹€.

https://github.com/jsmreese/moment-duration-format/

@jsmreese 쒋은 μ‚¬λžŒ! :λ§₯μ£Ό:

@jsmreese 멋지닀. !
이것이 moment.js 자체의 일뢀가 μ•„λ‹Œ μ΄μœ λŠ” λ¬΄μ—‡μž…λ‹ˆκΉŒ? humanizeλŠ” 정밀도 μ—†μ΄λŠ” κ·Έλ ‡κ²Œ μœ μš©ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. μ™œ 1 μ‹œκ°„ 30 λΆ„μ—μ„œ 1 μ‹œκ°„μœΌλ‘œ λ°˜μ˜¬λ¦Όν•˜κ³  μ‹ΆμŠ΅λ‹ˆκΉŒ? .. μ‚¬μš© 사둀가 μ—†μŠ΅λ‹ˆλ‹€.

+1, jsmreese의 ν”ŒλŸ¬κ·ΈμΈμ€ ν›Œλ₯­ν•˜κ²Œ μž‘λ™ν•˜μ§€λ§Œ moment.js의 일뢀라면 쒋을 κ²ƒμž…λ‹ˆλ‹€.

+1. 이 κΈ°λŠ₯은 μΈκ°„ν™”λ˜μ–΄μ•Όν•©λ‹ˆλ‹€.

duration.format의 경우 +1

@jsmreese λŠ” 거의 1 λ…„ 전에 ν”ŒλŸ¬κ·ΈμΈμ„ κ²Œμ‹œ @timrwood @ichernev 이것을 메인 moment.js λΌμ΄λΈŒλŸ¬λ¦¬μ—

+1

+1

: +1 : duration.format

+1

: +1 :

+1

μ΄κ²ƒμ˜ ν˜„μž¬ μƒνƒœλŠ” λ¬΄μ—‡μž…λ‹ˆκΉŒ?

μ•„λ§ˆλ„ μœ μ§€ κ΄€λ¦¬μžλŠ” μš°λ¦¬κ°€ 1000이 될 λ•ŒκΉŒμ§€ λ˜λŠ” μƒˆν•΄ μ „μ•Όλ₯Ό 기닀리고 μžˆμŠ΅λ‹ˆκΉŒ? λΏ‘λΏ‘

@gkatsanos- 더 이상 Momentλ₯Ό μœ μ§€ν•˜λŠ” 데 적극적으둜 μ°Έμ—¬ν•˜κ³  μžˆμ§€ μ•Šμ§€λ§Œ (항상 λ„μš°λ―Έμ˜€μŠ΅λ‹ˆλ‹€), 제 μΆ”μ²œμ€ 잘 ν…ŒμŠ€νŠΈ 된 ν’€ λ¦¬ν€˜μŠ€νŠΈμž…λ‹ˆλ‹€. ν™•μ‹€νžˆ 이것을 μ‹€μ œλ‘œ μ½”λ”©ν•˜λ €λŠ” λˆ„κ΅°κ°€κ°€ μžˆμŠ΅λ‹ˆλ‹€.

@icambron 이것은 이미 ν”ŒλŸ¬κ·ΈμΈμœΌλ‘œ μ‘΄μž¬ν•©λ‹ˆλ‹€ .. ν•  일이 더 μžˆμŠ΅λ‹ˆκΉŒ?
κ΄€λ¦¬μž btwλŠ” λˆ„κ΅¬μž…λ‹ˆκΉŒ?

@icambron ν”ŒλŸ¬κ·ΈμΈμ„

그리고 그것은 맀우 λͺ¨μ–‘이 쒋은 ν”ŒλŸ¬κ·ΈμΈ 인 것 κ°™μŠ΅λ‹ˆλ‹€. 이에 따라 사싀을 μ œμ™Έμ‹œμΌ°λ‹€ lodash λŒ€μ‹  underscore , PR둜 λ§Œλ“€κΈ° μœ„ν•΄ 방지 λ‹€λ₯Έ 일이 .. κ±°κΈ° κ²ƒμ€μ—μ„œ 포트 κ²ƒμœΌλ‘œ 보인닀 lodash 에 underscore 은 κ·Έλ ‡κ²Œ 어렡지 μ•ŠμŠ΅λ‹ˆλ‹€. / cc @jsmreese

@alexanderbeletsky @gkatsanos 사싀 μ–Όλ§ˆ 전에 lodash λ˜λŠ” underscore 쒅속성을 μ œκ±°ν–ˆμŠ΅λ‹ˆλ‹€.

λ‚΄ ν”ŒλŸ¬κ·ΈμΈμ΄ Moment.js 코어에 ν¬ν•¨λ˜λŠ” μ£Όμš” μž₯μ• λ¬Ό 쀑 ν•˜λ‚˜λŠ” μ™„μ „ν•œ i18n 지원이 μ—†λ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€.

이것이 μ €μ—κ²Œ 개인적으둜 큰 κ΄€μ‹¬μ‚¬μž…λ‹ˆλ‹€. μ§€μ›λ˜λŠ” μ—¬λŸ¬ μ–Έμ–΄λŠ” μ €μ—κ²Œ 큰 일이며 κΈ°λŠ₯ Aκ°€ μ–΄λ–€ μ–Έμ–΄λ‘œλ„ μž‘λ™ν•˜μ§€λ§Œ κΈ°λŠ₯ BλŠ” μ˜μ–΄λ‘œλ§Œ μ œκ³΅λ˜λŠ” 상황에 빠지고 싢지 μ•ŠμŠ΅λ‹ˆλ‹€.

@jsmreese μ•„λ§ˆλ„ μ €μž₯μ†Œμ— 잘 μ •μ˜ 된 μž‘μ—…μ„ λ§Œλ“€λ©΄ μ •ν™•νžˆ μˆ˜ν–‰ν•΄μ•Ό ν•  μž‘μ—…μ— λŒ€ν•΄ λΆ„λͺ…νžˆ 도움이 될 κ²ƒμž…λ‹ˆλ‹€.

@mattgrande @alexanderbeletsky ν˜•μ‹ 토큰은 이미 μ‚¬μš©μž 지정이 κ°€λŠ₯ν•˜λ©° ν˜•μ‹ ν…œν”Œλ¦Ώμ€ μž„μ˜μ μ΄λ―€λ‘œ λ¬Έμ œκ°€λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

κΈ°λ³Έ μ„œμ‹ ν…œν”Œλ¦Ώμ€ μ–΄λ–€ 식 μœΌλ‘œλ“  ν˜„μ§€ν™”λ˜μ§€ μ•ŠμœΌλ©° μ†Œμˆ˜μ μ„ ν˜„μ§€ν™”ν•˜κ±°λ‚˜ 값에 ν˜„μ§€ν™” 된 숫자 μ„œμ‹μ„ μΆ”κ°€ ν•  수 μ—†μŠ΅λ‹ˆλ‹€. 그게 λ‚΄ 머리 κΌ­λŒ€κΈ°μ—μ„œ λˆ„λ½ 된 μ „λΆ€μž…λ‹ˆλ‹€.

: +1 :

+1 κΈ°κ°„ ν˜•μ‹!

sooo .... 왓이 이거 거래?

여기에 백만 개의 λŒ“κΈ€μ΄ 있기 λ•Œλ¬Έμ— λͺ‡ 가지 사항에 μ£Όλͺ©ν•˜μ‹­μ‹œμ˜€. λ‚˜λŠ” λ©”μΈν…Œμ΄λ„ˆκ°€ μ•„λ‹ˆλ©°μ΄ ν”„λ‘œμ νŠΈμ—μ„œ 더 이상 ν™œλ™ν•˜μ§€ μ•Šμ§€λ§Œ 두 가지λ₯Ό ν™•μ‹ ν•©λ‹ˆλ‹€.

  1. μ—¬λŸ¬λΆ„, @jsmreese ν”ŒλŸ¬κ·ΈμΈμ„ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 멋지닀! ν”ŒλŸ¬κ·ΈμΈμ€ 쒋은 κ²ƒμž…λ‹ˆλ‹€! ( @jsmreese , κ·Έλ ‡κ²Œν•˜λ €λŠ” 경우 PRμ΄μžˆλŠ” λ¬Έμ„œμ˜ Moment ν”ŒλŸ¬κ·ΈμΈ λͺ©λ‘μ— μΆ”κ°€ ν•  수 μžˆμŠ΅λ‹ˆλ‹€. https://github.com/moment/momentjs.com)
  2. λˆ„κ΅°κ°€κ°€ a) κ΅­μ œν™”ν•˜κ³  b) ν…ŒμŠ€νŠΈλ₯Ό Moment의 ν…ŒμŠ€νŠΈμ— ν†΅ν•©ν•˜κ³  c) PR을 μ œμΆœν•  λ•ŒκΉŒμ§€ Moment의 핡심에 ν¬ν•¨λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λˆ„κ΅°κ°€ κ·Έλ ‡κ²Œ ν•  λ•ŒκΉŒμ§€ 그것은

+1 duration.format

+1 κΈ°κ°„ ν˜•μ‹!

+1 duration.format

+1 duration.format. 우리의 κ²½μš°λŠ” 초λ₯Ό 전달할 μˆ˜μžˆλŠ” ν•¨μˆ˜μ™€μ΄λ₯Ό ν¬λ§·ν•˜λŠ” λ¬Έμžμ—΄μ„ μ œκ³΅ν•˜κ³ μžν•œλ‹€λŠ” κ²ƒμž…λ‹ˆλ‹€. μ§€κΈˆ μš°λ¦¬λŠ” moment.startof ( "w"). add ( "s", nrOfSeconds) .format (customFormatString);

λΆˆν–‰νžˆλ„ μ§€λ‚œμ£Ό startof ( "w")κ°€ μΌμš”μΌμ΄κ³  μΌμš”μΌμ€ 일광 μ ˆμ•½ μ‹œκ°„μ΄μ–΄μ„œ 였λ₯˜κ°€ λ°œμƒν–ˆμŠ΅λ‹ˆλ‹€. κ·Έλž˜μ„œ ν•œ μ‹œκ°„μ„ λ†“μ³€μŠ΅λ‹ˆλ‹€. λ¬Όλ‘  isDSTShifted ()둜 확인할 수 μžˆμ§€λ§Œ ν˜•μ‹μ„ μ§€μ •ν•˜κΈ° μœ„ν•΄ 기간을 λ‚ μ§œλ‘œ λ³€ν™˜ ν•  ν•„μš”κ°€μ—†λŠ” 것은 μ—¬μ „νžˆ ​​ꡉμž₯ν•©λ‹ˆλ‹€.

+1 duration.format

+1 duration.format

duration.format +1

duration.format의 경우 +1

+1ν•˜λŠ” μ‚¬λžŒμ΄ μ‹€μ œλ‘œμ΄ μŠ€λ ˆλ“œλ₯Ό 읽지 μ•ŠκΈ° λ•Œλ¬Έμ— 닫을 수 μžˆμŠ΅λ‹ˆκΉŒ?

2015 λ…„ 6 μ›” 10 일 μˆ˜μš”μΌ, 08:30 SamFromDaUk [email protected] μž‘μ„± :

duration.format의 경우 +1

β€”
이 이메일에 직접 λ‹΅μž₯ν•˜κ±°λ‚˜ GitHubμ—μ„œ ν™•μΈν•˜μ„Έμš”.
https://github.com/moment/moment/issues/463#issuecomment -110751635.

μ•„λ‹ˆλ©΄ μˆ˜μ • ν•˜μ‹œκ² μŠ΅λ‹ˆκΉŒ?

George, +1을 μΆ”κ°€ν•˜λŠ” μ‚¬λžŒλ“€μ€ λ¬΅μ‹œμ μœΌλ‘œ λ™μ˜ν•˜μ§€ μ•ŠλŠ” 것 κ°™μŠ΅λ‹ˆλ‹€.
λ‹¨μˆœνžˆ μ΄λŸ¬ν•œ κΈ°λŠ₯을 μ›ν•©λ‹ˆλ‹€.

μ•Œλ¦Όμ΄ μ§œμ¦μ„ λ‚Έλ‹€λ©΄ ꡬ독 μ·¨μ†Œλ₯Ό κ³ λ €ν•˜μ„Έμš”.
μ‹€.
2015 λ…„ 6 μ›” 11 일 00:07, "George Katsanos" [email protected]이 μž‘μ„±ν–ˆμŠ΅λ‹ˆλ‹€.

μ•„λ‹ˆλ©΄ μˆ˜μ • ν•˜μ‹œκ² μŠ΅λ‹ˆκΉŒ?

β€”
이 이메일에 직접 λ‹΅μž₯ν•˜κ±°λ‚˜ GitHubμ—μ„œ ν™•μΈν•˜μ„Έμš”.
https://github.com/moment/moment/issues/463#issuecomment -110767322.

github에 νˆ¬ν‘œ κΈ°λŠ₯μ΄μ—†λŠ” μ΄μœ λŠ” (λ‚΄ μ΄ν•΄μ—μ„œ) 토둠을 λ°©ν•΄ν•˜κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€.

당신이 μ›ν•˜λŠ” λͺ¨λ“  것에 μ•”λ¬΅μ μœΌλ‘œ λ™μ˜ν•˜μ§€ μ•Šμ„ 수 μžˆμŠ΅λ‹ˆλ‹€. 그것은 λ„μ›€μ΄λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. 그것이 λŒ€λ‹¨ν•˜λ‹€κ³  μƒκ°ν•˜μ§€ μ•ŠλŠ”λ‹€λ©΄, μŠ€λ ˆλ“œλ₯Ό 읽고 λ‹Ήμ‹ μ˜ μ£Όμž₯ (특히, μƒˆλ‘œμš΄ μ£Όμž₯μ΄λ‚˜ 당신이 잘λͺ» κ³ λ €ν–ˆλ‹€κ³  μƒκ°ν•˜λŠ” 점)을 μ œκ³΅ν•˜μ‹­μ‹œμ˜€.

λ‚˜λŠ” 아직 ν₯미둜운 μ£Όμž₯이 남아 μžˆλ‹€κ³  μƒκ°ν•˜κΈ° λ•Œλ¬Έμ— μ—¬μ „νžˆ κ΅¬λ…ν•˜κ³ μžˆλ‹€. λ‚˜λŠ” 그것듀을 λ“£κΈ°λ₯Ό κΈ°λŒ€ν•˜μ§€λ§Œ νŒ€μ€ 단지 λ™λ£Œμ˜ μ••λ ₯에 κ΅΄λ³΅ν•΄μ„œλŠ” μ•ˆλœλ‹€.

μœ„μ—μ„œ μ–ΈκΈ‰ ν•œ @icambron ν”ŒλŸ¬κ·ΈμΈμ΄ μž‘λ™ν•˜λŠ”μ§€ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

당신이 저와 κ°™λ‹€λ©΄ 더 넓은 좜λ ₯을 가진 .fromNow() λ₯Ό μ›ν•©λ‹ˆλ‹€ (예 : μ•„λ§ˆμ‘΄μ˜ 배솑 카운트 λ‹€μš΄). 방법은 λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

// include the plugin
var cutoffDate = moment().add(3, 'hours'); // some date in the future that we're counting down to
var now = moment();
var output = moment.duration(cutoffDate.diff(now)).format('h [hours] m [minutes] s [seconds]');
// "3 hours 0 minutes 0 seconds"

λ„€, λΆ„λͺ…ν•˜κ²Œ ν•  κ²ƒμž…λ‹ˆλ‹€. moment.duration (). format ()은이 ν”ŒλŸ¬κ·ΈμΈκ³Ό ν•¨κ»˜ μž‘λ™ν•©λ‹ˆλ‹€ : https://github.com/jsmreese/moment-duration-format

μœ μ„±μ„ μ‚¬μš©ν•˜λŠ” 경우 oaf:moment-duration-format

이것은 λ‚˜λ₯Ό μœ„ν•΄ μž‘λ™ν•˜μ§€ μ•ŠλŠ” 것 κ°™μŠ΅λ‹ˆλ‹€. 두 번 사이에 moment .diffλ₯Ό μ‚¬μš©ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€. μž‘λ™ν•©λ‹ˆλ‹€. λ¬Έμ œλŠ” "pm"κ³Ό "am"μ‚¬μ΄μ—μžˆμ„ λ•Œμž…λ‹ˆλ‹€. μ˜€ν›„ 9μ‹œμ— μ—¬ν–‰ν•˜κ³  μ°©λ₯™ν•œλ‹€κ³  κ°€μ •ν•©λ‹ˆλ‹€. μ˜€μ „ 2μ‹œ, μ •ν™•ν•œ μ‹œκ°„μ„ λ°›μ•„μ•Όν•©λ‹ˆλ‹€.

@ Markj89 당신은 stackoverflow 주제λ₯Ό μ—΄ ν•„μš”κ°€ μžˆμŠ΅λ‹ˆλ‹€.

+1

+1

+1

: +1 :

이 문제 쒅결에 +1. ν”ŒλŸ¬κ·ΈμΈμ„ μ‚¬μš©ν•˜λŠ” 것은 κ²¬κ³ ν•œ μ†”λ£¨μ…˜μž…λ‹ˆλ‹€.

+1

+1

.format() 에 +1

+1, 4 λ…„ 후에도 κ΅¬ν˜„λ˜μ§€ μ•ŠμŠ΅λ‹ˆκΉŒ? :λ””

+1

Btw. 인간화 된 ν˜•μ‹λ„ νŒŒμ‹± ν•  수 μžˆμ–΄μ•Όν•œλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ 7 days and 5 hours ꡬ문 뢄석이 κ·Έλ ‡κ²Œ 어렡지 μ•ŠμŠ΅λ‹ˆλ‹€ ...

@jsmreese 의 ν”ŒλŸ¬κ·ΈμΈμ΄ ν›Œλ₯­ν•˜κ²Œ μž‘λ™ ν–ˆμŒμ„ κ°•μ‘°ν•˜κ³  μ‹Άμ—ˆμŠ΅λ‹ˆλ‹€!

: +1 :

+1 duration.format

+1 κΈ°κ°„ ν˜•μ‹

+1 duration.format

+1 duration.format

: +1 :

λ‚˜λŠ” 이것을 # 1048에 μ°¬μ„±ν•˜μ—¬ 닫을 κ²ƒμž…λ‹ˆλ‹€. 사라 μ‘Œλ‹€λŠ” μ˜λ―ΈλŠ” μ•„λ‹™λ‹ˆλ‹€. λͺ‡ 년이 μ§€λ‚œ 두 가지 λ¬Έμ œκ°€ μžˆμ—ˆκ³  λ‘˜ λ‹€ 'κΈ°κ°„ ν˜•μ‹ 지정'으둜 μš”μ•½λ©λ‹ˆλ‹€. λ‹€λ₯Έ ν•˜λ‚˜λŠ” 이것을 더 λͺ…ν™•ν•˜κ²Œ μ„€λͺ…ν•©λ‹ˆλ‹€.

+1 duration.format

+1 duration.format

+1

.localeData (). relativeTime (45, true, 'mm')을 μ‚¬μš©ν•˜κ³  45 뢄을 κ°€μ Έμ˜΅λ‹ˆλ‹€.;)

+1 이것에 λŒ€ν•΄ λ„ˆλ¬΄ λ§Žμ€ 이야기가 μžˆμ§€λ§Œ κ΅¬ν˜„λ˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€. 이 https://github.com/jsmreese/moment-duration-format에 λŒ€ν•œ λ³„λ„μ˜ νŒ¨ν‚€μ§€λ„

기간을 μ–΄λ–€ ν˜•μ‹ μœΌλ‘œλ“  ν‘œμ‹œν•˜λ €λ©΄ 기간을 ms둜 λ³€ν™˜ ν•œ λ‹€μŒ μˆœκ°„μœΌλ‘œ λ³€ν™˜ν•˜λ©΄λ©λ‹ˆλ‹€.
moment(duration.as('milliseconds')).format('HH:mm:ss')

감사! λ¬Έμ„œμ— μžˆμŠ΅λ‹ˆκΉŒ? λͺ» λ΄€μ–΄ ...

μž‘λ™ν•˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ— λ¬Έμ„œμ— μ—†μŠ΅λ‹ˆλ‹€. μœ λ‹‰μŠ€ μ‹œλŒ€λ₯Ό μ‚¬μš©ν•˜μ—¬ 밀리 초λ₯Ό μ‹œλŒ€ μ΄ν›„μ˜ μ‹œμ μœΌλ‘œ ν•΄μ„ν•˜λŠ” ν•΄ν‚Ήμž…λ‹ˆλ‹€. λ”°λΌμ„œ 기간이 24 μ‹œκ°„ 이상이면 λ¬΄λ„ˆμ§‘λ‹ˆλ‹€.

이 μ½”λ“œμ— λŒ€ν•œ λͺ‡ 가지 사항 :

  1. hh 토큰은 μ˜€μ „ / μ˜€ν›„μ— μ‚¬μš©λ˜λŠ” ν† ν°μ΄λ―€λ‘œ 기간은 μ΅œλŒ€ 12κΉŒμ§€λ§Œ κ°€λŠ₯ν•©λ‹ˆλ‹€.

  2. 23κΉŒμ§€ μ˜¬λΌκ°€λŠ” HH 토큰을 μ‚¬μš©ν•˜λ”λΌλ„ λ‹€μŒ λ‚ μ§œλ‘œ λ„˜μ–΄κ°ˆ κ²ƒμ΄λ―€λ‘œ 기간은 23 : 59 : 59.999보닀 κΈΈ 수 μ—†μŠ΅λ‹ˆλ‹€.

  3. 이 μ½”λ“œκ°€ μž‘μ„±λ˜λ©΄ UTC둜 된 μ„œλ²„μ—μ„œλ§Œ μž‘λ™ν•©λ‹ˆλ‹€. λ‹€λ₯Έ μ‹œκ°„λŒ€μ˜ λͺ¨λ“  λΈŒλΌμš°μ €λŠ” 예기치 μ•Šμ€ κ²°κ³Όλ₯Ό μƒμ„±ν•©λ‹ˆλ‹€.

이 해킹을 μ‚¬μš©ν•˜λ €λ©΄ λ‹€μŒκ³Ό 같이 μž‘μ„±ν•΄μ•Όν•©λ‹ˆλ‹€.

moment.utc(duration.as('milliseconds')).format('HH:mm:ss')

κ·ΈλŸ¬λ‚˜ λ‚΄κ°€ μ§€μ ν–ˆλ“―μ΄ 이것은 κ·€ν•˜μ˜ 기간이 24 μ‹œκ°„ 미만인 κ²½μš°μ—λ§Œ μž‘λ™ν•©λ‹ˆλ‹€. κ·Έ 이상, λ‹€μ‹œ 원점 1둜 λŒμ•„κ°‘λ‹ˆλ‹€.

감사. .minutes() 와 .seconds() μ—°κ²°ν•  수 μžˆλ‹€λŠ” 것을 μ•Œμ•„λ‚΄λŠ” 데 였늘 μ‹œκ°„μ΄ μ’€ κ±Έλ ΈμŠ΅λ‹ˆλ‹€. μ €λ₯Ό 바보라고 λΆ€λ₯΄μ„Έμš”.ν•˜μ§€λ§Œ λ¬Έμ„œμ—μ„œ .seconds() 와 .asSeconds() 의 차이점이 λ‹Ήμž₯ ν™•μ‹€ν•˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€ ...ν•˜μ§€λ§Œ 이제 μ‹€μ œλ‘œ 거기에 μžˆλ‹€λŠ” 것을 μ•Œμ•˜μŠ΅λ‹ˆλ‹€! :)

예 : console.log(duration.minutes()+":"+duration.seconds());

λ‚˜λŠ”μ΄ 방법을 고수 ν•  것이닀.

@elasticsteve 10보닀 μž‘ 으면 초 뢀뢄에 μ„ ν–‰ 0을 μΆ”κ°€ ν•  μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€. :λˆˆμ§“:

@butterflyhug @elasticsteve 이것이 μ‹€μ œλ‘œ format λ₯Ό μ‚¬μš©ν•˜κ³  μ‹Άμ—ˆλ˜ 주된 μ΄μœ μž…λ‹ˆλ‹€. 제 κ²½μš°μ—λŠ” κ°„λ‹¨ν•œ 짧은 μ‹œκ°„ μΉ΄μš΄ν„°μ΄λ―€λ‘œ @maggiepint 의 μ†”λ£¨μ…˜μœΌλ‘œ μΆ©λΆ„ν•©λ‹ˆλ‹€.
moment.utc(duration.asMilliseconds()).format('HH:mm:ss')

@sagivo 쒋은 지적! 이제 @maggiepint μ†”λ£¨μ…˜μ΄ 더 맀λ ₯적으둜 λ³΄μž…λ‹ˆλ‹€. λ‚΄ μ„œλ²„λŠ” μ–΄μ¨Œλ“  UTCμž…λ‹ˆλ‹€.

λ¬Όλ‘ μž…λ‹ˆλ‹€. λ‚˜λŠ” λ˜ν•œ ν”„λ‘œλ•μ…˜ μ½”λ“œμ—μ„œ κ·Έ 해킹을 μ‚¬μš©ν–ˆμŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ μ‹¬ν•˜κ²Œ μ‹€νŒ¨ν•˜λŠ” 상황이 많기 λ•Œλ¬Έμ— 일반적인 μ†”λ£¨μ…˜μœΌλ‘œ ꢌμž₯ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€ (λͺ‡ 가지 νŠΉμ • μ‚¬μš© 사둀λ₯Ό μ œμ™Έν•˜κ³ ). (예 : 음수 기간은 아직 λͺ…μ‹œ 적으둜 μ–ΈκΈ‰λ˜μ§€ μ•Šμ€ 또 λ‹€λ₯Έ μ€‘μš”ν•œ μ‹€νŒ¨ μ‚¬λ‘€μž…λ‹ˆλ‹€.)

+1

+1 duration.format () !!!!!!!!!

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1

λ””λ²„κ·Έν•˜κΈ° μ–΄λ €μš΄ μ‹œκ°„ +1

+1

λ‹€μŒκ³Ό 같이 μ‰½κ²Œ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

    var duration = moment().add(5, 'days') -  moment().local();
    var s = Math.floor( (duration/1000) % 60 );
    var m = Math.floor( (duration/1000/60) % 60 );
    var h = Math.floor( (duration/(1000*60*60)) % 24 );
    var d = Math.floor( duration/(1000*60*60*24) );
    return d + ' days ' + h + ' hours ' + m + ' minutes ' + s  + ' seconds before the deadline.';   
    // 4 days 23 hours 59 minutes 59 seconds before the deadline.

ν•œ λͺ…μ˜ μ‚¬μš©μž νŠΈμœ„ν„° @Toon_Ladyboy μš”μ²­

λ‹€μŒκ³Ό 같이 μ‰½κ²Œ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

    var duration = moment().add(5, 'days') -  moment().local();
    var s = Math.floor( (duration/1000) % 60 );
    var m = Math.floor( (duration/1000/60) % 60 );
    var h = Math.floor( (duration/(1000*60*60)) % 24 );
    var d = Math.floor( duration/(1000*60*60*24) );
    return d + ' days ' + h + ' hours ' + m + ' minutes ' + s  + ' seconds before the deadline.';   
    // 4 days 23 hours 59 minutes 59 seconds before the deadline.

μΆ”μ•…ν•˜μ§€λ§Œ νš¨κ³Όμ μž…λ‹ˆλ‹€.

2019 년에도이 κΈ°λŠ₯이 ν•„μš”ν•©λ‹ˆλ‹€.

Humanize의 κ°„λ‹¨ν•œ 맀개 λ³€μˆ˜ (예 humanize(precise: true) )λŠ” λͺ¨λ“  λ°˜μ˜¬λ¦Όμ„ μš°νšŒν•˜μ—¬ λͺ¨λ‘λ₯Ό ν–‰λ³΅ν•˜κ²Œ λ§Œλ“€ 수 μžˆμŠ΅λ‹ˆλ‹€. κ²Œλ‹€κ°€ λ°˜μ˜¬λ¦Όμ€ κ΅¬ν˜„ν•˜κΈ° μ–΄λ €μš΄ λΆ€λΆ„μž…λ‹ˆλ‹€. λ‚˜λ¨Έμ§€λŠ” format ()으둜 μˆ˜ν–‰λ˜λŠ” λ‹€λ₯Έ ν˜•μ‹κ³Ό λ§ˆμ°¬κ°€μ§€λ‘œ 기간을 κ°„λ‹¨νžˆ λ³€ν™˜ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

쒋은이 moment λ°©λ²•μ΄λΌλŠ” fromNow() κ³Ό 같이 쒋은 μ‚¬λžŒμ΄ 읽을 μˆ˜μžˆλŠ” ν˜•νƒœλ‘œ νŠΉμ • μ‹œκ°„μ—μ„œ μ‹œκ°„μ„ λ°˜ν™˜ 것이닀 :

moment('2019-04-30T07:30:53.000Z').fromNow() // an hour ago || a day ago || 10 days ago

λ˜λŠ” 두 νŠΉμ • λ‚ μ§œ 사이에 μ›ν•˜λŠ” 경우 λ‹€μŒμ„ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

var a = moment([2007, 0, 28]);
var b = moment([2007, 0, 29]);
a.from(b); // "a day ago"

λ¬Έμ„œμ—μ„œ κ°€μ Έμ˜΄ :

λ‹€μ‹œ μ—΄ 수 μžˆμŠ΅λ‹ˆκΉŒ? 이것은 맀우 기본적인 κΈ°λŠ₯μž…λ‹ˆλ‹€.

제 κ²½μš°μ—λŠ” 문제λ₯Ό ν•΄κ²° ν•œ νŒ¨ν‚€μ§€λ₯Ό μ°Ύμ•˜μŠ΅λ‹ˆλ‹€.
https://github.com/EvanHahn/HumanizeDuration.js

λ‹€λ₯Έ μ‚¬λžŒμ—κ²Œλ„ 유용 ν•  수 μžˆμŠ΅λ‹ˆλ‹€. :)

2019 λ…„ 7 μ›” 및이 κΈ°λŠ₯은 아직 μ‚¬μš©ν•  수 μ—†μŠ΅λ‹ˆλ‹€.

2019 λ…„ 7 μ›” 및이 κΈ°λŠ₯은 아직 μ‚¬μš©ν•  수 μ—†μŠ΅λ‹ˆλ‹€.

아직 μ‹œλ„ν•΄ 보지 μ•Šμ•˜μ§€λ§Œ 방금 μ•Œμ•„ μ°¨ λ ΈμŠ΅λ‹ˆλ‹€!
npm install moment-duration-format

https://github.com/jsmreese/moment-duration-format

2019 λ…„ 9 μ›” 아직 κ³΅μ‹μ μœΌλ‘œμ΄ κΈ°λŠ₯을 λ†“μΉ˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

d.format('H:mm:ss');
"1:01:01"

λ˜ν•œμ΄ κΈ°λŠ₯을 κ°€μ§ˆ 수 있기λ₯Ό λ°”λžλ‹ˆλ‹€.

d.format('D-H:mm:ss'); // existence of D will mod hours to 24
"999-23:59:59"

μ™œ 이것이 λ‹«ν˜”λŠ”μ§€ κΆκΈˆν•œ μ‚¬λžŒμ΄ μžˆλ‹€λ©΄ : https://github.com/moment/moment/issues/463#issuecomment -228543000

이것은 κ²°μ½” μ΄μƒμ μ΄μ§€λŠ” μ•Šμ§€λ§Œ ν•΄κ²° λ°©λ²•μœΌλ‘œ 이와 같은 μž‘μ—…μ„ μˆ˜ν–‰ν–ˆμŠ΅λ‹ˆλ‹€. λΉ„ν™œμ„± ν›„ μ‚¬μš©μžλ₯Ό 둜그 μ•„μ›ƒν•˜κΈ°μœ„ν•œ 카운트 λ‹€μš΄μ΄μžˆλŠ” duration κ°œμ²΄κ°€ μžˆμ—ˆκ³  남은 μ‹œκ°„μ„ ν¬λ§·ν•˜κ³  μ‹Άμ—ˆμŠ΅λ‹ˆλ‹€.

// What I did:
private getTimeString(duration: moment.Duration): string {
    const time = moment()
      .seconds(duration.seconds())
      .minutes(duration.minutes());

    return time.format('mm:ss');
}

// What I'd rather do (as many others have mentioned)...
private getTimeString(duration: moment.Duration): string {
    return duration.format('mm:ss');
}

λ‚΄ ν•΄ν‚€ μ†”λ£¨μ…˜ :

import moment from 'moment';

const formatInt = (int: number): string => {
  if (int < 10) {
    return `0${int}`;
  }
  return `${int}`;
};

export const formatDuration = (time: string): string => {
  const seconds = moment.duration(time).seconds();
  const minutes = moment.duration(time).minutes();
  const hours = moment.duration(time).hours();
  if (hours > 0) {
    return `${formatInt(hours)}:${formatInt(minutes)}:${formatInt(seconds)}`;
  }
  if (minutes > 0) {
    return `${formatInt(minutes)}:${formatInt(seconds)}`;
  }
  return `00:${formatInt(seconds)}`;
};

2020 λ…„

λ‚˜λŠ” λ‹€μŒ 방법을 μ‚¬μš©ν•˜λŠ”λ°, λ‹€λ₯Έ μ‚¬λžŒμ—κ²Œ 유용 ν•  수 μžˆμŠ΅λ‹ˆλ‹€. :)

function formatDuration(duration, format) {
  const date = moment().startOf('day');
  return date.add(duration).format(format);
}

(μ €λŠ” 00:00μ—μ„œ 23:59 μ‚¬μ΄μ˜ 기간을 ν¬λ§·ν•˜λŠ” 데만 μ‚¬μš©ν•©λ‹ˆλ‹€)

μ•„μ§λ„μ΄κ²Œ ν•„μš”ν•΄

μ΄λŸ¬ν•œ 'get'은 μ›ν•˜λŠ” λ°©μ‹μœΌλ‘œ ν˜•μ‹μ„ μ§€μ •ν•˜λŠ” 데 λ„μ›€μ΄λ©λ‹ˆλ‹€.

  duration.get('years')
  duration.get('months')
  duration.get('days')
  duration.get('hours')
  duration.get('minutes')
  duration.get('seconds')

λ‚΄κ°€ ν•¨κ»˜ μΌν•˜λŠ” 것 :

const formatDuration = ms => {
  const days = Math.floor(ms / 8.64e7);
  const msOnLastDay = ms - days * 8.64e7;
  return (days < 10 ? "0" + days : days) + ":" + moment.utc(msOnLastDay).format("HH:mm:ss.SSS");
};
formatDuration(5)
"00:00:00:00.005"
formatDuration(500)
"00:00:00:00.500"
formatDuration(50000)
"00:00:00:50.000"
formatDuration(5000000)
"00:01:23:20.000"
formatDuration(500000000)
"05:18:53:20.000"
// for reference
JSON.stringify(moment.duration(500000000)._data, null, 2)
"{
  "milliseconds": 0,
  "seconds": 20,
  "minutes": 53,
  "hours": 18,
  "days": 5,
  "months": 0,
  "years": 0
}"

2019 λ…„ 7 μ›” 및이 κΈ°λŠ₯은 아직 μ‚¬μš©ν•  수 μ—†μŠ΅λ‹ˆλ‹€.

아직 μ‹œλ„ν•΄ 보지 μ•Šμ•˜μ§€λ§Œ 방금 μ•Œμ•„ μ°¨ λ ΈμŠ΅λ‹ˆλ‹€!
npm install moment-duration-format

https://github.com/jsmreese/moment-duration-format

이것은 μ™„λ²½ν•˜κ²Œ 잘 μž‘λ™ν•©λ‹ˆλ‹€ :)

κ²Œμž„μ€ 끝났닀 :)

κ°μ‚¬ν•©λ‹ˆλ‹€, κ°μ‚¬ν•©λ‹ˆλ‹€ !!!


De : Aleksey Makas [email protected]
Enviado : sexta-feira, 2020 λ…„ 9 μ›” 9 일 11:03
Para : moment / moment [email protected]
μ°Έμ‘° : Douglas Aguiar [email protected] ; μ½”λ©˜νŠΈ [email protected]
Assunto : Re : [moment / moment] κΈ°κ°„ λˆ„λ½ κΈ°λŠ₯ (# 463)

κ²Œμž„μ€ 끝났닀 :)

β€”
λŒ“κΈ€μ„ λ‹¬μ•˜ κΈ° λ•Œλ¬Έμ— μˆ˜μ‹  ν•œ κ²ƒμž…λ‹ˆλ‹€.
이 이메일에 직접 λ‹΅μž₯ν•˜κ±°λ‚˜ GitHub https://github.com/moment/moment/issues/463#issuecomment-706200427 μ—μ„œ λ³΄κ±°λ‚˜ ν•˜μ„Έμš” .

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