ç§ã¯ãããžã§ã¯ãã«åãçµãã§ããã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
2çªç®ã®åé¡ã¯ãæ°å€ã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ããã§ã«ããŒã«ãªãŒãŒã·ã§ã³ãåŠçããŠãããšãã«æåã§è¡ãå¿ èŠããããããã³ããããããã·ã¥ã§ããã°å¹žãã§ãã
ãã®ãªã¯ãšã¹ãã§+1
@llacroix ãããã®ãã«ãªã¯ãšã¹ããæžãããšã«èå³ããããŸããïŒ
ã¯ãããããããç§ã¯ãã®ããã®æéãèŠã€ããããšããŸãã ãããmomentjsã«è¿œå ãããšãé·æçã«ã¯èªåèªèº«ãä»ã®äººã®æéãç¯çŽã§ããã§ãããã çŸåšãããã¯ç§ã«ã©ãã§ãããçš®ã®æ··ä¹±ãåŒãèµ·ããããšã匷å¶ããŸãããããŠããã¯å®ç§ã§ã¯ãããŸããã momentjsãä¿®æ£ããæ¹ãé©åãªããã§ãã
ããããã©ã®ãããªåœ¢åŒãå®è¡ããå¿ èŠããããã«ã€ããŠãããå°ãè°è«ããå¿ èŠããããŸãã ããšãã°ã0ã®å€ã衚瀺ãããã©ããã
4 hours 20 seconds
ãŸãã¯0 days 4 hours 0 minutes 20 seconds
æã¯30æ¥ã1幎ã¯365ã«ãªããŸãã
ãŸãã幎ãæãé±ãæ¥ãåãç§ãããªç§ä»¥å€ã®åœ¢åŒãååšããå¿ èŠããããŸãã
ãã®ããã®+1
ããããã¯ããããã§ã¯ãã©ãŒããããéèŠãªåé¡ã§ãã 人éåãšãã©ãŒãããã®äž¡æ¹ãééããªãå¿
èŠã§ãã
è¡åã人éåããããã®ããã€ãã®ææ¡ïŒ
// 1:30
duration.humanizeïŒïŒ;
1æé30å
duration.humanizeïŒ{roundïŒ "hours"}ïŒ
2æé
duration.humanizeïŒ{roundïŒ "minutes"}ïŒ
1æé30å
duration.humanizeïŒ{roundïŒ "seconds"}ïŒ
1æé30å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ã瀺åããããã«ããŒãåãããå€ãããªãã³ã°ããããã®ãã©ã¡ãŒã¿ãŒãè¿œå ãããå ŽåããããŸãã å€åãã®ãããªãã®ã
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
moment.duration.fn
ãä»ããŠå
¬éãããŸãã
ç§ã¯æšå¹ŽãïŒ143 /ïŒ192ã§åæ§ã®ããšã«åãçµãã§ããŸããã ãã£ã ã¯ãã©ã°ã€ã³ãææ¡ããŸããããç§ã¯ãããããã®ã«æéããããããšã¯ãããŸããã§ããã
ä»äºãåèµ·åããããšããŠããŸããã ãã¥ã¬ãŒã·ã§ã³ãªããžã§ã¯ããªã©ã®æ°ããã³ã³ã»ããã«æŽæ°ããå¿ èŠããããŸãã...ç§ã¯ãã®ãã±ãããšä»ã®ãã±ããã§ããã ä»ãç§ã¯ããããŸã å¿ èŠãã©ããããããŠãããããªãããããã©ã®ããã«å®è£ ãã¹ããã«ã€ããŠèŠåŽããŠããŸãã
ç§ã¯èªåã®éŽãèžã¿ãããªãã®ã§ãç§ãå©ããããšãã§ãããã©ãããç¥ããŸããã çŸåšã誰ããã®åé¡ã«åãçµãã§ããŸããïŒ
ç§ã®ã³ãŒãã¯ã次ã®ããã«é£ç¶ãããŠããããšé£ç¶ããªããŠãããã«ãã©ãŒãããããããšãã§ããŸããïŒ
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'
ããã«é åºãæ£ãããªããŠãããã¯åŠçããŸãã
ããã¯ãããã§ããããŸãã«ç§ãæãã§ãããããªãã®ã§ãïŒ
ããã¯ééããªã誰ã«ãšã£ãŠãå¿ èŠãªæ©èœã§ãã
ãããå¿ èŠã§ãïŒ
äžéšã®äººã«ãšã£ãŠã®äžæçãªã®ã£ãããšããŠãMomentããçŽæ¥countdown.jsã䜿çšã§ããç°¡åãªãã©ã°ã€ã³ãäœæããŸããã
moment("1982-5-25").countdown().toString(); // => '30 years, 10 months, 14 days, 2 hours, 23 minutes, and 50 seconds'
䜿çšããåäœã粟床ãªã©ãæž¡ãã«ãŠã³ãããŠã³ãªãã·ã§ã³ãééããŸãïŒã«ãŠã³ãããŠã³ã®ããã¥ã¡ã³ããåç §ããŠãã ããïŒã ãšã«ããããã©ã°ã€ã³ã¯ããã«ãããŸãïŒ https ïŒ
@icambronããªãã®
ç§ã¯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;
}
ãã®ã³ãŒãã®ç¹åŸŽïŒ
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"
èããããåé¡ïŒ
Math.floor(moment.duration(milliseconds)).asHours()
ãã®ãªã¯ãšã¹ãã®+1
å人çã«ã¯ã .humanize()
ããã€ãã®åã£ãã«ãŒã«ãèšå®ãããã .countdown()
ã¡ãœãããäœæããããããããã .format()
ã¡ãœãããå®è£
ããæ¹ãçã«ããªã£ãŠãããšæããŸãã åé¡ã®95ïŒ
ã¯.format()
ã§è§£æ±ºã§ããŸãã
.humanize()
æ¹ã粟床ãé«ãã¯ãã§ãããå¥ã®æ©èœã§ããå¿
èŠãããããšã«åæããŸãã
ãã©ãŒãããæéã¯å¿ é ã§ãã ãã©ãŒããããããæååã§ç§ãå€æããã®ã¯ç°¡åãªã¯ãã§ãã
å³å¯ãªã³ãŒããè©ŠããŸããã次ã®ããã«ãªããŸãã
d = moment.durationïŒ{æ¥ïŒ1ãæéïŒ1ãåïŒ1}ïŒ; d.formatïŒ 'DHïŒmmïŒss'ïŒ;
ã1-215ïŒ01ïŒ00ã
format()
+1
ãŠãŒã¹ã±ãŒã¹ãšããŠãã¿ã€ãã³ã°è©Šéšã§äœ¿çšãããæéïŒ3æéïŒã¯ãhhïŒmmïŒïŒssïŒãªã©ã®ããã«ç°¡åã«ãã©ãŒãããã§ããŸããããã¯éåžžã«ç°¡åã§ãã ä»ã®ãšãããããã©jsã«æãåºããŸã§ãã¢ãŒã¡ã³ãã§åãããšãããã®ã¯ããªãé£ããã§ã:)
+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ã®ç¶æ³ã¯ã©ããªã£ãŠããŸããïŒ é ãã§ããïŒ
ç§ã¯ãã°ããé¢ããŠããŸãã...ç§ããã®åé¡ãäœæããã»ãŒ1幎ã ãã£ãŠã¿ãŸãã ãã¹ã/ã¬ãã¥ãŒãããã®ãããã°ããã«ãã¢ãŒã¡ã³ãjsããã©ãŒã¯ããŠããã®åé¡ãæŽæ°ããŸãã ç§ã¯2æ¥ã§è©Šéšã®æºåãããªããã°ãªããŸããã ãããã£ãŠã2æ¥ä»¥å ã«äœãã衚瀺ãããå¯èœæ§ã¯ã»ãšãã©ãããŸããã ããã¯èšã£ãŠããç§ã¯ããã«åãçµãã§ãããŸãã
@llacroixããããšã:)
ïŒ+1ïŒduration.formatïŒïŒã®å Žå
moment.duration.fn.format = functionïŒzerosãtwoDigitïŒ{ var hours = this.hoursïŒïŒãminutes = this.minutesïŒïŒãseconds = this.secondsïŒïŒ; var displayFormat = ''ãzerosFormat = twoDigitïŒ '00'ïŒ '0'ãpadLeft = twoDigitïŒ -2ïŒ-1; ifïŒæé||ãŒãïŒ{ displayFormat + =ïŒzerosFormat + hoursïŒ.sliceïŒpadLeftïŒ+ 'h'; } ifïŒå||ãŒãïŒ{ displayFormat + =ïŒzerosFormat + minutesïŒ.sliceïŒpadLeftïŒ+ 'min'; } ifïŒç§||ãŒãïŒ{ displayFormat + =ïŒzerosFormat + secondsïŒ.sliceïŒpadLeftïŒ+ 's'; } $ .trimïŒdisplayFormatïŒ;ãè¿ããŸãã }
+1æé圢åŒã
+ 1duration.format
+ 1duration.format
ç§ã¯æ¬åœã«å æ¬çãªæéãã©ãŒããããå¿ èŠã ã£ãã®ã§ããããšStackOverflowã§ã¹ã¬ããã確èªããä»æ¥åº§ã£ãŠå®è£ ããŸããã
ç§ã¯ãŸã ããã€ãã®å°ããªè©³çŽ°ã«åãçµãã§ããŸãããã³ã¢ã¯å®æããŠããŠãã£ããããŠããŸãã ã³ãŒããä»æ§ãäŸã¯ãæ°æ¥ââäžã«ããã«æ²èŒãããŸãã åºæ¬çãªèãæ¹ã¯ãä»»æã®æéãèšå®ããŠãç¬éã®æ¥ä»åœ¢åŒã®æååã«äŒŒãæååã§åœ¢åŒåã§ãããšããããšã§ãã duration.formatïŒ "d [d] hhïŒmmïŒss"ïŒ-> 2d 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ã«äŸåããŠããŸãã
+ 1duration.formatïŒïŒ
ãã®ãã±ããã¯1幎以äžåã«ãªãŒãã³ããŸããã ç§ã¯ãããå®è£ ãããããšã¯ãªããšæããŸãã
@ Maxwell2022 1é±éã»ã©åã«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ãå³ã§ããããšã-ç§ã¯ãã¢ã³ããŒã¹ã³ã¢ã®ãã«ãã®äžéšã§ã¯ãªãLoDashã®æ©èœã䜿çšããŠ_am_ã
Underscore.Stringã®äŸåé¢ä¿ãåé€ããUnderscoreã®äºææ§ã«åãçµãã§ããŸãã
moment-duration-formatãã©ã°ã€ã³ã¯ãããã®åé¡ã®1ã€ã解決ããŸããããã±ãŒã«éã§æ©èœããã¢ãããŒããå¿ èŠã ãšæããŸãïŒç¢ºãã«ãããã¯ã¯ããã«å°é£ã§ãïŒã
ïŒ1241ã®å®è£
ã«åãââçµãå¿
èŠããããšæããŸããããã«ããã人éãèªãã圢åŒã®æ¥ä»ãçžå¯Ÿçãªæ¥ä»ãæéãããã³ãã±ãŒã«éã®ãªã¹ããã¬ã³ããªã³ã°ãããšããç¹ã§å€ãã®æãéãããŸãã MomentãCLDRèšèªããŒã¿ã«ã¢ã¯ã»ã¹ã§ããå Žåã formatDuration
ãå®è£
ããã®ã¯ããªãç°¡åã§ãã
jQueryã®Globalizeã©ã€ãã©ãªã¯ãåãåé¡ã®å€ãã«åãçµãã§ãããããããšååããããšã¯è«ççã§ããããã«æãããŸãã Twitterã«ã¯ããã®çš®ã®ããšãããããè¡ãéåžžã«å æ¬çãªã©ã€ãã©ãªããã§ã«ãããŸã...
OKãããã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
})
ïŒ+1ïŒ+1
ïŒ+1ïŒ
+ 1duration.format
+ 1duration.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
ãããããå°ãªããšãå
è¡ãŒãå€ã§åºåããããã«moment.duration(3, 'seconds').get('ss')
ãå®è¡ã§ããããã«ãªãããã«ã¯ãééããªãåå ããŸãã
ãã®ãªã¯ãšã¹ãã®ç¶æ ã¯ã©ããªã£ãŠããŸããïŒ ãããé²æ©ãããããã«ã©ã®ãããªå©ããå¿ èŠã§ããïŒ
@oncletom
ããã¯ååšããŸãïŒ https ïŒ
ãŸããLo-DashãŸãã¯Underscoreãžã®äŸåãæ°ã«ããªãå Žåã¯ãããããããšãã§ããŸãã
ãã€ãç§ã¯ãã®äŸåé¢ä¿ãåãé€ãããã«å°ãæéãäœãã§ããã...
humanize
ãstdlibã«ããã®ã«ã 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ãžã®ä»¥åã®äŸåé¢ä¿ãåé€ããMomentDuration Format1.3.0ãå ¬éããŸããã çŸåšãå¯äžã®äŸåé¢ä¿ã¯Moment.jsèªäœã§ãã
@jsmreeseãã€ã¹ãã³ïŒ ïŒããŒã«ïŒ
@jsmreeseãã£ãããã ïŒ
ãªããããmoment.jsèªäœã®äžéšã§ã¯ãªãã£ãã®ããç§ã«ã¯ããããŸããã humanizeã¯ç²ŸåºŠããªããã°ããã»ã©æçšã§ã¯ãããŸãããããªã1æé30åã1æéã«äžžãããã®ã§ããããïŒ..ãã®ãŠãŒã¹ã±ãŒã¹ã¯ãããŸããã
+ 1ãjsmreeseã«ãããã©ã°ã€ã³ã¯èŠäºã«æ©èœããŸãããmoment.jsã®äžéšã§ãããšäŸ¿å©ã§ãã
+1ã ãã®æ©èœã¯çµã¿èŸŒãŸãã人éåãããŠããå¿ èŠããããŸãã
duration.formatã®+1
@jsmreeseã¯1幎è¿ãåã«åœŒã®ãã©ã°ã€ã³ãå ¬éãããã®åé¡ã¯2幎åã«éãããŸããã @timrwood @ichernevãããã¡ã€ã³ã®moment.jsã©ã€ãã©ãªã«å ¥ããŠããããŸããïŒ
+1
+1
ïŒ+1ïŒduration.formatã®å Žå
+1
ïŒ+1ïŒ
+1
ããã®çŸç¶ã¯ã©ãã§ããïŒ
ãã¶ããã¡ã³ããã¯ç§ãã¡ã1000ã«éãããŸã§ããŸãã¯å€§æŠæ¥ãŸã§åŸ ã£ãŠããŸããïŒ @icambron
@ gkatsanos-ç§ã¯Momentã®ç¶æãæ¯æŽããããšã«ç©æ¥µçã§ã¯ãªããªããŸããïŒãããŠç§ã¯åžžã«åãªããã«ããŒã§ããïŒããç§ã®æšå¥šã¯ååã«ãã¹ãããããã«ãªã¯ãšã¹ãã§ãã 確ãã«ãå®éã«ãããã³ãŒãã£ã³ã°ããããšãããšããªãããšãèŠæ±ãã誰ããããŸãã
@icambronããã¯ãã©ã°ã€ã³ãšããŠãã§ã«ååšããŸã..ä»ã«äœãããå¿
èŠããããŸããïŒ
ãšããã§ã¡ã³ããã¯èª°ã§ããïŒ
@icambronãã©ã°ã€ã³ãæããŠããã ããŸããïŒ
ãããŠããã¯éåžžã«åœ¢ã®è¯ããã©ã°ã€ã³ã®ããã§ãã ãããäŸåãããšããäºå®ãé€ãlodash
ã®ä»£ããã«underscore
PRãšããŠãããäœãããã«é²ããããä»ã®ãã®ããã..ããããŒãã§ããããã«æãlodash
ã«underscore
ã¯ããã»ã©é£ããããšã§ã¯ãããŸããã / cc @jsmreese
@alexanderbeletsky @gkatsanoså®éãç§ã¯ãã°ããåã«lodash
ãŸãã¯underscore
äŸåé¢ä¿ãåé€ããŸããã
ç§ã®ãã©ã°ã€ã³ãMoment.jsã³ã¢ã«å«ãŸããŠããããšã®äž»ãªããŒãã«ã®1ã€ã¯ãå®å šãªi18nãµããŒãã®æ¬ åŠã§ãã
ãããŠãããã¯ç§ã«ãšã£ãŠå€§ããªé¢å¿äºã§ãã ãµããŒããããŠããè€æ°ã®èšèªã¯ç§ã«ãšã£ãŠå€§ããªãã®ã§ãããæ©èœAã¯ã©ã®èšèªã§ãæ©èœããããæ©èœBã¯è±èªã®ã¿ã§ãããšããç¶æ³ã«é¥ããããããŸããã
@jsmreeseãªããžããªã«æ確ã«å®çŸ©ãããã¿ã¹ã¯ãäœæããå Žåã¯ãæ£ç¢ºã«å®è¡ããå¿ èŠãããããšã確èªããŠãã ãããç§ã¯ééããªãå©ãã«é£ã³èŸŒã¿ãŸãã
@mattgrande @alexanderbeletskyãã©ãŒãããããŒã¯ã³ã¯ãã§ã«ã«ã¹ã¿ãã€ãºå¯èœã§ããããã©ãŒããããã³ãã¬ãŒãã¯ä»»æã§ãããããåé¡ã«ã¯ãªããŸããã
ããã©ã«ãã®ãã©ãŒããããã³ãã¬ãŒãã¯ããŒã«ã©ã€ãºãããŠããããå°æ°ç¹ãããŒã«ã©ã€ãºããããå€ã«ããŒã«ã©ã€ãºãããæ°å€ãã©ãŒããããè¿œå ãããããããšã¯ã§ããŸããã ãããç§ã®é ã®ãŠã£ãºãããæ¬ ããŠãããã¹ãŠã§ãã
ïŒ+1ïŒ
+ 1duration.formatïŒ
ãã£ãã....ã¯ããã¯ãããšã®ååŒã§ããïŒ
ããã«ã¯çŸäžã®ã³ã¡ã³ããããã®ã§ãç«ã¡å¯ã£ãŠããã€ãã®ããšã«æ³šæããŠãã ããã ç§ã¯ã¡ã³ããã§ã¯ãªãããã®ãããžã§ã¯ãã§æŽ»åããŠããŸãããã次ã®2ã€ã®ããšã確信ããŠããŸãã
+ 1duration.format
+ 1duration.formatïŒ
+ 1duration.format
+ 1duration.formatã ç§ãã¡ã®å Žåã¯ãç§æ°ãšãããããã©ãŒãããããæååãæž¡ãããšãã§ããé¢æ°ãæäŸããããšããããšã§ãã çŸåšãmoment.startofïŒ "w"ïŒãaddïŒ "s"ãnrOfSecondsïŒ.formatïŒcustomFormatStringïŒ;ã䜿çšããŠå®è¡ããŠããŸãã
æ®å¿µãªãããå é±ãstartofïŒ "w"ïŒãæ¥ææ¥ã§ãããæ¥ææ¥ã¯å€æéã®æéã§ãã£ãããããšã©ãŒãçºçããŸããããã®ããã1æéãæ¬ èœããŠããŸããã ãã¡ãããisDSTShiftedïŒïŒã§ç¢ºèªã§ããŸããããã©ãŒãããããããã ãã«æéãæ¥ä»ã«å€æããå¿ èŠããªãã®ã¯çŽ æŽãããããšã§ãã
+ 1duration.format
+ 1duration.format
duration.format
+1
duration.formatã®+1
æããã«èª°ã+1ããŠãã®ã¹ã¬ãããèªãã§ããªãã®ã§ããããéããããšã¯ã§ããŸããïŒ
æ°Žã2015幎6æ10æ¥ã«ã¯ãåå8æ30 SamFromDaUk [email protected]ã¯æžããŸããïŒ
duration.formatã®+1
â
ãã®ã¡ãŒã«ã«çŽæ¥è¿ä¿¡ããããGitHubã§è¡šç€ºããŠãã ãã
https://github.com/moment/moment/issues/463#issuecomment-110751635 ã
ãŸãã¯ããããä¿®æ£ããŸããïŒ
ãžã§ãŒãžã+ 1ãè¿œå ããŠãã人ã¯æé»ã®ãã¡ã«å察ããŠãããšæããŸãããããŠ
åã«ãããã®æ©èœãå¿
èŠã§ãã
éç¥ãããªããèç«ãããŠããå Žåã¯ãããããã®éäŒãæ€èšããŠãã ãã
糞ã
2015幎6æ11æ¥00:07ããGeorgeKatsanosã [email protected]ã¯æ¬¡ã®ããã«æžããŠããŸãã
ãŸãã¯ããããä¿®æ£ããŸããïŒ
â
ãã®ã¡ãŒã«ã«çŽæ¥è¿ä¿¡ããããGitHubã§è¡šç€ºããŠãã ãã
https://github.com/moment/moment/issues/463#issuecomment-110767322 ã
githubã«æ祚æ©èœããªãçç±ã¯ïŒç§ã®ç解ã§ã¯ïŒãè°è«ãæããšã©ãŸãããããã§ãã
ããªãã¯æé»ã®ãã¡ã«ããªããæããã¹ãŠã«å察ããããšãã§ããŸããããã¯åœ¹ã«ç«ã¡ãŸããã ãããçŽ æŽãããããšã«åæããªãå Žåã¯ãã¹ã¬ãããèªã¿ãè°è«ãè¡ã£ãŠãã ããïŒå ·äœçã«ã¯ãæ°ããè°è«ããååã«èæ ®ãããŠããªããšæãããç¹ïŒã
èå³æ·±ãè°è«ãæ®ã£ãŠãããšæãã®ã§ããŸã 賌èªããŠããŸããããããèãã®ã楜ãã¿ã«ããŠããŸãããããŒã ã¯åãªã仲éããã®å§åã«å±ããã¹ãã§ã¯ãããŸããã
äžèšã®ãã©ã°ã€ã³@icambronãåäœããããšã確èªã§ããŸãã
ããªããç§ã®ãããªããããåºãåºåïŒAmazonã®é
éã«ãŠã³ãããŠã³ãªã©ïŒãåãã.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 ïŒ
æµæã䜿çšããŠããå Žåã¯ã oaf:moment-duration-format
ã«è¡ããŸã
ããã¯ç§ã«ã¯ããŸããããªãããã§ããç§ã¯2åã®éã®moment .diffã䜿çšããŠããŸããããã¯ããŸããããŸããåé¡ã¯ããããååŸããšãååãã®éã«ãããšãã§ããç§ã¯ååŸ9æã«æ è¡ããŠçéžããŠãããšèšããŸãåå2æãæ£ããæéãååŸããå¿ èŠããããŸãã
@ Markj89ã¹ã¿ãã¯ãªãŒããŒãããŒãããã¯ãéãå¿ èŠããããŸãã
+1
+1
+1
ïŒ+1ïŒ
ãã®åé¡ãéãããš+1ããŸãã ãã©ã°ã€ã³ã®äœ¿çšã¯ç¢ºå®ãªè§£æ±ºçã§ãã
+1
+1
.format()
+1
+ 1ã4幎çµã£ãŠããŸã å®è£ ãããŠããŸãããïŒ ïŒD
+1
ãšããã§ã 人éåããããã©ãŒãããã解æã§ããã¯ãã ãšæããŸãã ããšãã°ã 7 days and 5 hours
ã解æããã®ã¯ããã»ã©é£ãããããŸãã...
@jsmreeseã®ãã©ã°ã€ã³ãããŸãæ©èœããããšã匷調ãããã£ãã ãã§ãïŒ
ïŒ+1ïŒ
+ 1duration.format
+1æé圢åŒ
+ 1duration.format
+ 1duration.format
ïŒ+1ïŒ
ïŒ1048ãæ¯æããŠãããéããŸãã ããããªããªã£ããšããæå³ã§ã¯ãããŸãããæ°å¹Žåã®2ã€ã®åé¡ããããã©ã¡ãããæéã®ãã©ãŒããããäœæãããã«èŠçŽãããŸãã ãã1ã€ã¯ããããããæ確ã«èª¬æããŠããŸãã
+ 1duration.format
+ 1duration.format
+1
.localeDataïŒïŒãrelativeTimeïŒ45ãtrueã 'mm'ïŒã䜿çšããŠã45åãååŸããŸã;ïŒ
+1ããã«ã€ããŠã¯æ¬åœã«å€ãã®è©±ããããŸããããŸã å®è£ ãããŠããŸããã ãã®https://github.com/jsmreese/moment-duration-formatã«ã¯å¥ã®ããã±ãŒãžããã
æéãä»»æã®åœ¢åŒã§è¡šç€ºããã«ã¯ãæéãããªç§ã«å€æããŠããã¢ãŒã¡ã³ãã«å€æããã ãã§ãã
moment(duration.as('milliseconds')).format('HH:mm:ss')
ããããšãïŒ ããã¯ããã¥ã¡ã³ãã«ãããŸããïŒ ç§ã¯ãããèŠãŸããã§ãã...
ããã¯æ©èœããªããããããã¥ã¡ã³ãã«ã¯ãããŸããã ããã¯ãunixãšããã¯ã䜿çšããŠããªç§ããšããã¯ä»¥éã®æç¹ãšããŠè§£éããããã¯ã§ãã ãããã£ãŠãããªãã®æéã24æé以äžã®å Žåãããã¯ãã©ãã©ã«ãªããŸãã
ãã®ã³ãŒãã«é¢ããããã€ãã®ããšïŒ
hhããŒã¯ã³ã¯ãAM / PMã§äœ¿çšããããšãç®çãšããããŒã¯ã³ã§ãããããæéã¯æ倧12ã«ãªããŸãã
23ãŸã§äžããHHããŒã¯ã³ã䜿çšããå Žåã§ãã次ã®æ¥ä»ã«ã¯ãã¹ãªãŒããŒãããããæéã¯23ïŒ59ïŒ59.999ãè¶ ããããšã¯ã§ããŸããã
ãã®ã³ãŒããèšè¿°ãããŠãããããUTCã«ãããµãŒããŒã§ã®ã¿æ©èœããŸãã ç°ãªãã¿ã€ã ãŸãŒã³ã®ãã©ãŠã¶ã¯ãäºæããªãçµæããããããŸãã
ãã®ããã¯ã䜿çšããå Žåã¯ã次ã®ããã«èšè¿°ããå¿ èŠããããŸãã
moment.utc(duration.as('milliseconds')).format('HH:mm:ss')
ããããç§ãææããããã«ãããã¯ããªãã®æéã24æéæªæºã®å Žåã«ã®ã¿æ©èœããŸãã ãã®äžã§ãæ£æ¹åœ¢1ã«æ»ããŸãã
ããããšãã ä»æ¥ã .minutes()
ã.seconds()
ãšé£çµã§ããããšãç解ããã®ã«å°ãæéãããããŸããã ç§ããã«ãšåŒãã§ãã ããããããããã¥ã¡ã³ãããç§ã«ã¯.seconds()
ãš.asSeconds()
ã®éããããã«äœã§ãããã¯æããã§ã¯ãããŸããã§ãã...ãããä»ç§ã¯ãããå®éã«ããã«ããã®ãèŠãŸãïŒ :)
äŸïŒ console.log(duration.minutes()+":"+duration.seconds());
ç§ã¯ãã®æ¹æ³ã«åºå·ããŸãã
@elasticsteve 10æªæºã®å Žåã¯ãç§ã®éšåã«å è¡ãŒããè¿œå ããããšãã§ããŸãã ïŒãŠã£ã³ã¯ïŒ
@butterflyhug @elasticsteveããããç§ãformat
ã䜿ãããã£ãäž»ãªçç±ã§ãã ç§ã®å Žåãããã¯åçŽãªçæéã«ãŠã³ã¿ãŒãªã®ã§ã @ maggiepintã®ãœãªã¥ãŒã·ã§ã³ã§ååã§ãã
moment.utc(duration.asMilliseconds()).format('HH:mm:ss')
@sagivoè¯ãç¹ïŒ ããã§ã @ maggiepintãœãªã¥ãŒã·ã§ã³ã¯ããé åçã«èŠããŸãã ãšã«ããç§ã®ãµãŒããŒã¯UTCã§ãã
確ãã«ãç§ã¯å®å šã«ãããååŸããŸãã ãŸããæ¬çªã³ãŒãã§ããã®ããã¯ã䜿çšããŸããã ãããããããã²ã©ã倱æããç¶æ³ãããããããã®ã§ãç§ã¯ãããäžè¬çãªè§£æ±ºçãšããŠïŒããã€ãã®ç¹å®ã®ãŠãŒã¹ã±ãŒã¹ãé€ããŠïŒãå§ãããŸããã ïŒããšãã°ãè² ã®æéã¯ããŸã æ瀺çã«èšåãããŠããªããã1ã€ã®éèŠãªé害ã±ãŒã¹ã§ããïŒ
+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.
1人ã®ãŠãŒã¶ãŒããªã¯ãšã¹ãããtwitter @ 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(precise: true)
ããã¹ãŠã®äžžããåé¿ããã ãã§ããã¹ãŠã®äººã幞ãã«ããã®ã«ååã§ãã ãã®äžãäžžãã¯å®è£
ããã®ãé£ããéšåã§ãã æ®ãã¯ãformatïŒïŒã§è¡ãããä»ã®ãã©ãŒããããšåãããã«ãæéãå€æããã ãã§ãã
fromNow()
ãšåŒã°ããåªããmoment
ã¡ãœãããããã次ã®ããã«ãç¹å®ã®æå»ããã®æå»ã人éãèªãã圢åŒã§è¿ããŸãã
moment('2019-04-30T07:30:53.000Z').fromNow() // an hour ago || a day ago || 10 days ago
ãŸãã¯ã2ã€ã®ç¹å®ã®æ¥ä»ã®éã«ãããå¿ èŠãªå Žåã¯ã次ã䜿çšã§ããŸãã
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
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 ïŒ
ããã¯æ±ºããŠçæ³çã§ã¯ãããŸããããåé¿çãšããŠãã®ãããªããšãããããšã«ãªããŸããã éã¢ã¯ãã£ãã®åŸã«ãŠãŒã¶ãŒããã°ã¢ãŠãããããã®ã«ãŠã³ãããŠã³ãåãã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
ããã¯å®å šã«ããŸãæ©èœããŸã:)
ã²ãŒã ã¯çµãã ïŒïŒ
ããããšããããããšã!!!
ãïŒã¢ã¬ã¯ã»ã€ã»Makas [email protected]
EnviadoïŒsexta-feiraã9 de outubro de 2020 11:03
ãã©ïŒmoment / moment [email protected]
CcïŒDouglas Aguiar [email protected] ; ã³ã¡ã³ã[email protected]
AssuntoïŒReïŒ[moment / moment]æéäžè¶³ã®æ©èœïŒïŒ463ïŒ
ã²ãŒã ã¯çµãã ïŒïŒ
â
ããªããã³ã¡ã³ãããã®ã§ããªãã¯ãããåãåã£ãŠããŸãã
ãã®ã¡ãŒã«ã«çŽæ¥è¿ä¿¡ããããGitHub https://github.com/moment/moment/issues/463#issuecomment-706200427ã§è¡šç€ºãããã httpsïŒ//github.com/notifications/unsubscribe-auth/AGD22DRNGNIQMOJFQY7VW3DSJ4J4VANCNFSM4ABRUZLAã®ç»é²ã解é€ããŠ
æãåèã«ãªãã³ã¡ã³ã
2019幎ããŸã ãã®æ©èœãå¿ èŠã§ãã