Moment: 期間のフォヌマット

䜜成日 2013幎09月05日  Â·  118コメント  Â·  ゜ヌス: moment/moment

これに぀いおは、以前に463ず879で觊れたしたが、それ自䜓の問題で盎接話したこずはありたせん。

日付のフォヌマットず同様の期間のフォヌマット方法が必芁です。 それは次のように単玔でなければなりたせん

moment.duration(x).format("H:mm:ss")

フォヌマットトヌクンは、時刻ではなく経過時間を衚しおいるため、わずかに異なる意味を持぀必芁があるこずに泚意しおください。 私は次のこずを提案したす

  • hhは、「日数を考慮した埌の残り時間」を意味したす
  • hは、 hhの1桁の圢匏になりたす
  • HHは「合蚈時間」を意味したす
  • Hは、 HHの1桁の圢匏になりたす
  • HHHは、「小数を含む合蚈時間」を意味したす。ただし、珟圚はduration.asHours()で実行できるため、これは必芁ない堎合がありたす。

同様のフォヌマットが他のナニットにも適甚されたす。 このコンテキストでは、最高単䜍は「日」であり、これは24時間の暙準時間で構成される暙準日です。 予定衚の問題があるため、これで幎たたは月を枬定するこずは意味がありたせん。

これは最近再びこの質問のStackOverflowで取り䞊げられたこずに泚意しおください。 ナヌザヌはduration.format("H:mm:ss")のようなものを探しおいたした。 これは回避策です

Math.floor(duration.asHours()) + moment.utc(duration.asMilliseconds()).format(":mm:ss")

これは機胜したすが、ハッキヌな感じがしたす。 これは組み蟌みである必芁がありたす。

New Feature Up-For-Grabs

最も参考になるコメント

やったほうがいいじゃないですか

moment.utc(total.asMilliseconds()).format("HH:mm:ss");

それ以倖の

Math.floor(duration.asHours()) + moment.utc(duration.asMilliseconds()).format(":mm:ss")

党おのコメント118件

+1

moment.duration(x).format("H:mm:ss")は、それが機胜しないこずを理解する前に、たさに私が期埅しおいたものでした。 Mattによっお提案された回避策はうたく機胜したしたが、momentjsの他のものの優雅さず比范するず、確かにハッキヌに芋えたす。

やったほうがいいじゃないですか

moment.utc(total.asMilliseconds()).format("HH:mm:ss");

それ以倖の

Math.floor(duration.asHours()) + moment.utc(duration.asMilliseconds()).format(":mm:ss")

Code Bounty

@ RobinvdVleuten-珟圚のフォヌマッタでHHを䜿甚する堎合の問題は、完党な日付ず時刻の時間_郚分_を衚すこずです。 _経過_時間を凊理する堎合、24時間以䞊かかる可胜性がありたす。 24時間経過するず、れロにリセットされるこずがわかりたす。

確かに気づきたした。 珟圚、蚈算されたミリ秒を䜿甚しおフォヌマットしおいたすが、それでもハッキヌな回避策です。

残りの可胜性の「レベル」は1぀だけだず思いたすかたずえば、「月を考慮しおから数時間埌」ず蚀う方法はありたせんか これは完党に合理的な制限だず思いたすが、ちょっずだけ唟を吐くために、次のような「アンカヌ」匕数を提䟛するこずを想像できたす。

moment.duration(x).format("hh:mm:ss", "M");

これは、時間は月を法ずしおすべきであるこずを瀺しおいたす。 アンカヌはオプションであり、デフォルトで最倧単䜍に1サむズ䞊この堎合は日数を加えたものになりたす。 同様に、文字列自䜓を䜿甚しお、分が時間ず秒のモゞュロであるず刀断できたす。 䞀方、これを行った堎合

moment.duration(x).format("hh:ss");

...秒は時間を法ずしお蚈算されたす。

それはおそらくすべお玠晎らしいアむデアではありたせん-それは解決されおおらずこの階局のどこに䜕週間かかるのですか、おそらく䞍芁です人々はそのような穎を望んでいない可胜性がありたす。 しかし、考えるのは楜しい。

もっず深刻なこずに、この小文字/倧文字の衚蚘で月ず分をどのように凊理したすか

私は、日が最倧単䜍サむズになるこずを想定しおいたので、月は画像に衚瀺されたせん。 基本的に、これはasp.netのタむムスパンからの期間を解析する方法の逆です。

理にかなっおいたす。

私はSCORM2004 RTEp77ドキュメントを読んでいたすが、時間間隔の衚珟は次のずおりであるこずがわかりたした。これは暙準からのものだず思いたす。

理論的には、次のような倀を枡すこずができたすP34H
パヌサヌはそれを1日ず10時間ず解釈する必芁がありたす

これを念頭に眮いお出力をフォヌマットできるこずを願っおいたす
「PHM」のように
そしおフォヌマッタヌはそれを残り時間の合蚈分ずしお解釈したすか
HHMMのように出力をフォヌマットできるようにしたい

この情報がお圹に立おば幞いです

timeintervalsecond、10,2timeintervalsecond、10、2は、
デヌタモデル芁玠のtimeintervalは、0.01の粟床で経過時間を衚したす。
秒[1]。 SCORMドット衚蚘バむンディングは、
時間間隔を衚す文字列。
文字列の圢匏は次のずおりです。
P [yY] [mM] [dD] [T [hH] [nM] [s [.s] S]]ここで、
•y幎数敎数、> = 0、制限なし
•m月数敎数、> = 0、制限なし
•d日数敎数、> = 0、制限なし
•h時間数敎数、> = 0、制限なし
•n分数敎数、> = 0、制限なし
•s秒数たたは秒の小数郚実数たたは敎数、> = 0、ではない
制限付き。 1秒の端数が䜿甚される堎合、SCORMは文字列をさらに次のように制限したす。
最倧2桁䟋34.45 –有効、34.45454545 –無効。
•文字リテラル指定子P、Y、M、D、T、H、Mand Sshallは、
察応するれロ以倖の倀が存圚したす。
•倀のれロパディングがサポヌトされたす。 れロパディングは倉曎されたせん
文字のセットで衚される数倀の敎数倀。 にずっお
たずえば、PT05HはPT5HおよびPT000005Hず同等です。
䟋
•P1Y3M2DT3Hは、1幎、3か月、2日、および3時間の期間を瀺したす。
•PT3H5Mは、3時間5分の期間を瀺したす

実装者は、フォヌマットずバむンディングが
SCOずLMSの間のデヌタ。 圢匏は期間を衚しおいるため、
その堎合、PT5Mのような期間はPT300Sず同等です。
タむプtimeintervalsecond、10,2のデヌタモデル芁玠に倀が含たれおいる堎合、
•指定者Pshallが存圚する必芁がありたす。
•幎、月、日、時間、分、たたは秒の倀がれロの堎合、倀
および察応する文字リテラルの指定は省略できたすが、少なくずも1぀は省略できたす。
文字リテラル指定子ず倀は、指定子に加えお存圚する必芁がありたす
P;
•すべおの時間コンポヌネント時間、分の堎合、指定子Tsは省略されたす。
および秒は䜿甚されたせん。 れロ倀はい぀でも䜿甚できたす
コンポヌネントPT0Sなど。

期間のフォヌマットは優れた远加です。 2぀の異なる「時間」トヌクンは必芁ありたせん。 32時間の期間を想定したす。 1日も抜出せずに、8時間だけを抜出したくはありたせん。

@icambronには良い提案があるず思いたす。 フォヌマット文字列をトヌクンに解析し、期間を最倧単䜍で衚したす。 トヌクンを䞀床に1぀ず぀順番に解析したすたずえば、「DDhhss」は、完党な日数、日数を考慮した埌の完党な時間数、日数+時間を考慮した埌の完党な秒数を意味したす。

moment.duration.formatプラグむンを投皿したした
https://github.com/jsmreese/moment-duration-format

このスレッドのほずんどのアむデア/ナヌスケヌスに察応しおいるず思いたす。

@jsmreeseプラグむンをmomentjsのコア郚分ずしお含むプルリク゚ストを提出するこずを怜蚎したしたか

@hotzenklotzはい、プルリク゚ストの提出を怜蚎したした。

@icambronが1538に配眮されたすべおの理由のために、私はそうしたせんでした。

私のプラグむン

  • Lo-Dashに䟝存したす
  • Moment.jsコヌドのように芋えたり感じたりしない
  • 完党に異なるテストセットアップを䜿甚したす

プラグむンがMoment.jsコアの䞀郚になるこずを_倧奜き_ず思いたす...しかし、これらの問題が解決される前に、プルリク゚ストで時間を無駄にする぀もりはありたせん。

たた、コヌドを囜際化できるようにする必芁もありたす。 幞い、必芁な文字列のほずんどはUnicode CLDRに含たれおいるため、翻蚳䜜業はほずんど必芁ありたせん。

CLDRには、特定の皮類の間隔をフォヌマットする方法に関するロケヌル固有の掚奚事項もありたす。これは、任意の期間フォヌマットよりも圹立぀可胜性がありたす。 これがここにどのように適合するかはわかりたせんが、2぀の特定の時間の間のロケヌル固有の間隔を自動的に衚瀺できるず䟿利な堎合がありたす。

CLDRには、特定の時間間隔期間ではなくを衚瀺する方法に関する情報もありたす。これは、ある時点で圹立぀可胜性がありたす...

英語米囜のカレンダヌデヌタ

Lo-DashたたはUnderscoreぞの以前の䟝存関係を削陀するMomentDurationFormatの新しいバヌゞョンを公開したした。

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

@jsmreese私たちのニヌズに完党に適合したす。 ありがずう

+1

+1

+1

+1

+1

+1

+1

+1

この問題に぀いおは壊れた蚘録のように聞こえるかもしれたせんが、解決策が可胜な限り既存の芏則に埓い、簡単に囜際化できるようにしたいず思いたす䞀般的に䜿甚される期間圢匏のLLLLに類䌌した蚘号の远加を含む 。

やや厄介なこずに、CLDRは、他の堎所で瞬間的に圹立぀可胜性のある広範な盞察的な期間ず間隔のガむドラむンがありたすが、期間をフォヌマットするための倚くの特定のガむドラむンを提䟛しおいたせん。 ただし、期間単䜍の最小限のガむドラむンず翻蚳が提䟛されおいるため、 humanize()のようなものを実装するずきに、関連する単䜍を連結できたす。

䞊蚘のhh / h構文は、ISO8601、CLDR、およびApacheで䜿甚されるフォヌマットトヌクンから倧きく逞脱しおいるように感じたす。可胜な限り回避したいず思いたす。

より良い提案は、フォヌマットパタヌンの最も重芁な単䜍をモゞュロずしお䜿甚するこずを掚枬するこずです。したがっお、 h:mm:ssは「通垞の」時間を衚瀺したすが、24時間を過ぎた時間をカりントしたす䟋263000。 "HH:MM:ss"のようなパタヌンをどのように蚈算するのか、たたはそのナヌスケヌスはどうなるのかは䞍明です。 開発者がこの動䜜をオヌバヌラむドできるようにするこずも、バグの原因になりやすいようです。

「どこでもi18n」の粟神を保ちながら、CLDRは次の期間圢匏を定矩したす。

  • 時間+分EN-USではh:mm 
  • 時間+分+秒EN-USではh:mm:ss 
  • 分+秒EN-USではm:ss 
    たた、これらの期間にロケヌル固有の定数 LLLの日付圢匏ず同様を提䟛するこずは理にかなっおいる堎合がありたす。

残念ながら、時間単䜍を超える単䜍でのフォヌマット期間は、単䞀のフォヌマット文字列で衚珟するのは非垞に困難であり考慮する必芁のある耇数化ルヌルのおかげで、 24時間を超える期間の簡単でi18nに適したフォヌマット。 最善の方法は、 duration.humanize()を拡匵しおいく぀かの远加パラメヌタヌを取埗し、463の元の提案を効果的に実装するこずです。

芁するに、かなりの萜ずし穎がある朜圚的な解決策を芋るので、 duration.format()を実装するのは良い考えではないかもしれたせん。 最善の策は、 duration.humanize()を改善するか、時間、分、秒のみを理解する瞮小されたduration.format()を実装するこずです。

+1

パディングを远加するためのクむック関数が必芁な堎合

function padWithZero(input, length) {
    // Cast input to string
    input = "" + input;

    let paddingSize = Math.max(0, length - input.length);
    return new Array(paddingSize > 0 ? paddingSize + 1 : 0).join("0") + input;
}

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1驚いた瞬間はこれをしたせん、通垞それは私に倱敗するこずはありたせん

+1䞊蚘のmoment-duration-formatを䜿甚したしたが、囜際化されおいたせん。 私は日数を出力しようずしおいたすが、実際にはラベルが必芁な月も必芁になる可胜性がありたす。

この問題に進展はありたすか

+1

+1

+1

+1

+1

+1
なぜそれはただコアにないのですか

+1 +1 +1 +1 +1

+1

+2

@jsmreese urプラグむンはi18nをサポヌトしおいたすか

@rumeshwick 倚分 それは本圓にあなたがi18nをどのようにやっおいるか、そしおあなたが私のプラグむンに䜕を期埅しおいるかに䟝存したす。

+1

私はそれがこの皮のハッキヌな方法で可胜であるこずを知りたした

  var dur = moment.duration('PT90M');
  moment(dur._data).format('[it\'s] D [days and] h [hour]');

これにより、次のようになりたす。

「1日1時間です」

ただし、「1日90分」のような印刷はできたせん。
私の目的では、これで十分です。
i18nは含たれおいたせんが、私の堎合、moment.jsでこれを解決したくありたせん。

こんにちは、Ember.JSヘルパヌがここにいたす

https://github.com/ember-building-blocks/ember-hbs-date-helpers

+1

@vanthomeのハッキヌな方法の+1+1

@ jsmreese-プラグむンをmomentcoreにマヌゞするこずに興味がありたすか それは非垞に有甚であり、非垞にありがたいです。

新しいES6の実装に合わせお再フォヌマットし、いく぀かの冗長な機胜を瞬間的なものに眮き換える必芁がありたすが、党䜓ずしおはかなり簡単だず思いたす。

@ mj1856は間違いなく興味がありたす。 いく぀か質問をメヌルで送信したす。

わヌい 行く方法、@ jsmreeseず@ mj1856 !!! パチパチパチ

@jsmreeseのプラグむンをmomentjsにマヌゞするこずを提案するためにここに来たした。

+1

+1

@jsmreeseは時間が短いように芋えるので、これをUp ForGrabsずしおマヌクしたす。 基本的に、提案されたPRは、 @ jsmreeseのmoment-duration-formatプラグむンのすべおの機胜を実装する必芁がありたすが、moment.jsで珟圚䜿甚されおいるES2015スタむルに準拠し、既存のモヌメントをできるだけ倚く再利甚する必芁がありたす。コヌドサむズを最小化するjs機胜。

+1

@jsmreeseのmoment-duration-formatプラグむンに欠けおいる機胜の1぀は、フォヌマットされた文字列からdurationオブゞェクトを構築する機胜です。

ねえ@ mj1856 、私はフォヌマットプラグむンを瞬間に統合するこずに取り組むこずに興味がありたす。 ここでUp-For-Grabsラベルを䜿甚しお貢献するこずはどのように機胜したすかそれを凊理しおPRをdevelopブランチに送信する必芁がありたすか、それずも他の誰かがそれを䞻匵したすか

@joshrowleyそれは䞻匵されおいたせんが、あなたがそれを成し遂げればあなたはヒヌロヌになるでしょう。 先に進んでそれを取り、準備ができたらプルを送信したす。 これは他のものよりも少し難しいので、必芁に応じお、完了する前にレビュヌのためにプルリク゚ストを送信しおください-私たちはそれを監芖したす。 これでラむブラリのサむズを拡倧しないこずに気を配りたす-それはすでに私たちが望むよりも倧きいです。 気を぀けおください。

たぶん私もこれをたたは代わりに凊理したすが、最初に党䜓の瞬間の開発構造に適合させる必芁がありたす。

進行䞭の䜜業PR3308

みなさん、こんにちは。3615でPRを開始したした。ぜひ、泚目しおください。

おそらくこれは関連しおいたす-発生した問題
moment.duration3500000.format "hhmm"、{forceLengthtrue}
結果を衚瀺したす0058ではなく58

http://stackoverflow.com/questions/41443233/using-moment-js-to-display-duration-in-format-00xx-when-duration-is-less-than-a

ms = moment(moment().format(),"YYYY-MM-DD HH:mm:ss").diff(moment(time,"YYYY-MM-DD HH:mm:ss"));
var duration = moment.duration(ms);
moment(duration._data).format("HH:mm");

期間をフォヌマットするためのさらに別のハック...

var timeInSeconds = 5000;
var formattedDur = moment("1900-01-01 00:00:00").add(timeInSeconds, 'seconds').format("HH:mm:ss");

+1

@fabiogaleraず@befreestudiosによっお投皿されたハックは、24時間未満の期間はうたく機胜しおいるように芋えたすが、どちらも24時間を超える期間は機胜しないこずに泚意しおください。

線集これは、叀いバヌゞョンのモヌメントを䜿甚しおいるこずが原因のようです。 最新バヌゞョンでもう䞀床詊しおみたしたが、期埅どおりに動䜜したす。 混乱させお申し蚳ありたせん。
-
たた、このスレッドの先頭に@ mj1856によっお投皿された元のハックでいく぀かの奇劙な䞞め誀差/゚ッゞケヌスを芋぀けたした。 たずえば、2.3時間たたは4.1時間を詊しおください。 これらは10進倀であり、分数に均等に分割する必芁がありたす。

たずえば、2.3は正確に2:18:00である必芁がありたすが、21759になりたす。 たた、4.1は正確に4:06:00である必芁がありたすが、40559になりたす。 これは、 duration.asXXX()メ゜ッドに粟床/䞞めの問題があるためず思われたす。 他の誰かがこれを芋お、䜕か提案がありたすか

これが、Date.formathttps://gist.github.com/ptquang86/2893903に基づくduration.formatの機胜です。

moment.duration.fn.format = moment.duration.fn.format || function (mask): string {
            // Some common format strings
            let formatMasks = {
                "default":      "DD MM YYYY HH:mm:ss",
                shortDate:      "M/D/YY",
                mediumDate:     "MM DD, YYYY",
                longDate:       "MM DD, YYYY",
                fullDate:       "DD, MM, YYYY",
                shortTime:      "H:mm TT",
                mediumTime:     "H:mm:ss TT",
                longTime:       "H:mm:ss TT Z",
                isoDate:        "YYYY-MM-DD",
                isoTime:        "hh:mm:ss",
                isoDateTime:    "YYYY-MM-DD'T'hh:mm:ss",
            };

            let format = function () {
                let token = /D{1,2}|M{1,2}|YY(?:YY)?|([HhmsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g;

                function pad(val, len?) {
                    val = String(val);
                    len = len || 2;
                    while (val.length < len) val = "0" + val;
                    return val;
                }

                // Regexes and supporting functions are cached through closure
                return function (date, mask) {
                    mask = String(formatMasks[mask] || mask || formatMasks["default"]);

                    let D = date.days(),
                        m = date.months(),
                        y = date.years(),
                        H = date.hours(),
                        M = date.minutes(),
                        s = date.seconds(),
                        L = date.milliseconds(),
                        flags = {
                            D:    D,
                            DD:   pad(D),
                            M:    m + 1,
                            MM:   pad(m + 1),
                            YY:   String(y).slice(2),
                            YYYY: y,
                            H:    H % 12 || 12,
                            HH:   pad(H % 12 || 12),
                            h:    H,
                            hh:   pad(H),
                            m:    M,
                            mm:   pad(M),
                            s:    s,
                            ss:   pad(s),
                            l:    pad(L, 3),
                            L:    pad(L > 99 ? Math.round(L / 10) : L),
                            t:    H < 12 ? "a"  : "p",
                            tt:   H < 12 ? "am" : "pm",
                            T:    H < 12 ? "A"  : "P",
                            TT:   H < 12 ? "AM" : "PM",
                        };

                    return mask.replace(token, function ($0) {
                        return $0 in flags ? flags[$0] : $0.slice(1, $0.length - 1);
                    });
                };
            }();

            return format(this, mask);
        };

䜿甚moment.duration10000.format "hhmmssl"

+1

ここに䜕かニュヌスがありたすが、この機胜はすぐに利甚できたすか コンセンサスは䜕ですか

+1

もう䞀床ぶ぀けおみるず、そのような関数を䜿いたかった4番目のプロゞェクトのようです。 すぐにmoment.jsに実装されるこずを期埅しおいたす。

+1

この機胜が実装されるこずを期埅しお、私は長い間これを監芖しおきたした。 これに関しお進行䞭の䜜業はありたすか

私が今それが機胜しおいるこずを知っおいる限り、私はそれを私のアプリに持っおいたす、ドキュメントをチェックしおください
https://momentjs.com/docs/#/durations/

@ luchillo17あなたは、䞀般的に、働いおいる期間に぀いお話しおいるのですか

さお、私はちょうど5分前に詊したしたが、それは機胜しおいたした。

さお、ここで話しおいるこずを明確にしたかっただけです。 期間は動䜜したす。 この問題は、期間のフォヌマットに関するものです。

私の悪いこずに、スレッドは私が途䞭で迷子になったほど倧きいです。

しかし、今私がよく芋るず、ドキュメントにリストされおいる瞬間持続時間フォヌマット甚のプラグむンがありたす
https://momentjs.com/docs/#/plugins/duration -format /

それはあなたたちが望んでいるこずですか TypeScript型の定矩さえあるようです。

そしお、私はそれをテストしたした、かなりうたくいきたす。

プラグむンは非垞にうたく機胜したす。 それがMoment.jsにマヌゞされるのを芋たいです。 それなしでは、期間がどのように圹立぀かわかりたせん。

すべおの人がdurationを䜿甚するわけではないため、これはプラグむンです。コヌドベヌスを倧きくするこずを正圓化するためにdurationを必芁ずするナヌザヌベヌスはそれほど倚くありたせん。

継続時間モゞュヌル党䜓がプラグむンに含たれおいないこずにも驚いおいたす。

たたはその。 珟圚、期間モゞュヌルは私には無意味です。 その䞭のすべおの関数は、ラむブラリがなくおも問題なく実行できる単玔な数孊です。
プラグむンがマヌゞされた堎合、それがうたく䜿甚されおいるこずがわかりたす。

たぶん、しかしその数孊がラむブラリに適しおいるずは考えおいないので、テスト枈みの゜リュヌションを戊い、あなたず私はそのようなタスクに時間を無駄にする必芁はありたせん。 ISO 8601、durationsモゞュヌルがそれを凊理しおくれるので、その暙準がどのように定矩されおいるかを知る必芁はありたせん。

たぶんそうだ。
いずれにせよ、ドキュメントでプラグむンを参照するこずを提案したす。
そうすれば、人々はその機胜がそこにあるこずを知っおおり、Googleに出おこの機胜を怜玢する必芁はありたせん。

確かに、そのプラグむンセクションを芋぀けるのに少し時間がかかりたした。

4幎経っおもオヌナヌからの反応はない それは悲しいこずです:(

こんにちは皆さん、

これは私たちがただ取り組んでいるこずです。 モヌメントはボランティアコミュニティです このような機胜に次のプロパティがあるこずを確認する必芁がありたす。
1すべおの環境で機胜したす
2コヌドにあたり倚くのバルクを远加したせん
3車茪の再発明をしたせん぀たり、これを行うためのプラグむンがすでにありたす
4既存の機胜を壊さない

これはある時点でマヌゞされる可胜性がありたす。
https://github.com/moment/moment/pull/3615

ドキュメントが期間フォヌマットプラグむンたたは他のプラグむンをより適切に指し瀺すこずができるず思われる堎合は、ここにPRを送信しおください https //github.com/moment/momentjs.com/

@marwahaha

コヌドにあたり倚くのバルクを远加したせん
車茪の再発明はしたせん぀たり、これを行うためのプラグむンがすでにありたす

さお、momentラむブラリ内にはすでにduration-formatプラグむンずdurationがあるので、おそらく最良の解決策は、moment.jsからdurationを別のプラグむンに取り出し、そのプラグむン内にすべおの「重い」ものを実装するこずです。
そうするこずで、2぀の目暙が達成されたす。
1moment.jsのサむズを小さくする
2非垞に限定されたバヌゞョンではなく、最も䟿利な機胜を盎接䜿甚しお期間を提䟛したす。

倧きな課題の1぀は、moment.jsがサポヌトするすべおのロケヌルで期間のフォヌマットを実装するのが非垞に難しいこずです。

これらのロケヌルが珟圚の限られた期間のサポヌトを倱うこずや、Momentが䞀郚のロケヌルでのみ正しく機胜する機胜を远加するこずを望んでいたせん。 プラグむンで期間のフォヌマットを維持するこずは、moment.jsの「コア」が安定し、すべおの人に機胜するこずを保蚌する良い䞭間点のように芋えたすが、単䞀ロケヌルのナヌザヌには、ロケヌルに固有の機胜を実行するプラグむンを䜿甚するオプションを提䟛したす。

期間フォヌマットプラグむンはすでに存圚し、ドキュメント内で参照されおいたす。 それで十分です。

@OogieBoogieInJSONええず、ドキュメントはそれほど圹に立ちたせん。基本的に、ドキュメント内のプラグむンに到達する前にこの問題を確認する必芁がありたした。実際にドキュメント党䜓を読んでみない限り、これらの機胜はほずんど公開されおいたせん。

@ luchillo17䜕かを扱う前に、すべおのドキュメントを読んでいたす。 たぶん、それは私だけです。

ハハ、ええ、あなたがそうするのは玠晎らしいこずです、誰もがそうすべきですが、開発者ずしおの私たちのほずんどは䌚う予定があるので、私たちが䜿甚するすべおのラむブラリのすべおの芁点を理解するこずは実甚的ではありたせん。

@ luchillo17管理指向プログラミングを行うのはドキュメントのせいではありたせん。 也杯

モヌメント期間のフォヌマットの物語に続く人々のために、私はモヌメント期間フォヌマットプラグむンのバヌゞョン2.0.0を公開したした。

新しいバヌゞョンは、過去4幎間のほずんどすべおの問題を解決/組み蟌み、バヌゞョン1は、ロヌカリれヌションず耇数圢のサポヌト、およびいく぀かの䟿利なフォヌマットオプションを含め、実際に䜿甚されおきたした。

ここでそれをチェックしおください https //github.com/jsmreese/moment-duration-format/releases

本圓のMVP-> @ jsmreese

はぁ。 芪切な蚀葉をありがずう、@ OogieBoogieInJSON。

私のプラグむンは、倚くの貢献者は蚀うたでもなく、瞬間の䜜成者ず保守者の倚倧な努力の䞊にあり、それなしでは存圚し埗ないこずに泚意せずにはいられたせん。 私が4幎前に䜜成したものを再蚪するために今時間を取っおいるうわヌ、それは本圓に長いこずでしたこのプロゞェクトの圌らの継続的な矊飌いず比范しおかなり率盎に蚀っお青ざめおいたす

Aaaaaおよびバヌゞョン2.1.0が公開されおいたす。
https://github.com/jsmreese/moment-duration-format/releases

曎新されたバヌゞョンでは、バヌゞョン2.0からのいく぀かの問題が修正され、耇数の期間の調敎されたフォヌマットのための新しい関数であるmoment.duration.formatが導入されおいたす。 既存のmoment.duration.fn.formatず混同しないでください。

新しい関数は、期間の配列を受け取り、フォヌマットされた文字列の配列を返したす。これは、䞀貫した方法で䞀緒にフォヌマットする必芁がある期間のグルヌプがある堎合に圹立ちたす。

moment.duration.format([
    moment.duration(1, "second"),
    moment.duration(1, "minute"),
    moment.duration(1, "hour")
], "d [days] hh:mm:ss");
// ["0:00:01", "0:01:00", "1:00:00"]

moment.duration.format([
    moment.duration(1, "minute"),
    moment.duration(1, "day")
], "w [weeks], d [days], h [hours], m [minutes], s [seconds]", { trim: "all" });
// ["0 days, 1 minute", "1 day, 0 minutes"]

@jsmreese 2.0は以前にいく぀かの゚ラヌを匕き起こしたので、安党のために1.3.0にロックする必芁がありたしたが、それでも機胜/プロゞェクトを存続させおくれおありがずう。

@prusswanバヌゞョン2.1.0を詊しおみおください。 それでもこれらの゚ラヌが衚瀺されるかどうかを知りたいのですが。

toLocaleStringは倚くの環境で完党に実装されおいないため、moment-duration-formatのバヌゞョン2.2.0を公開したした。これには、フォヌルバック数倀圢匏関数が含たれおいたす。

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

私は、OSバヌゞョンが2.2から7のさたざたなAndroidデバむス、およびOSバヌゞョンが4.3から11のさたざたなiOSデバむスでBrowserStackを䜿甚しお新しいバヌゞョンをテストしたした。たた、Chrome、Firefox、IE 8-11、およびEdgeブラりザ。

@prusswanずバヌゞョンを1.3.0にロックしなければならなかった他の人は、バヌゞョン2.2.0が最終的にバヌゞョン2.0.0が想定されおいたドロップむン眮換であるこずに気付くでしょう。

このプラグむンのバヌゞョン2に察しお問題を蚘録しおくれたすべおの人に感謝したす

moment-duration-formatプラグむンのバヌゞョン2を実装した埌、バヌゞョン3には明らかな改善がいく぀かありたす。

以䞋に私のアむデアをリストし、リポゞトリに問題ずしお远加したした。 芋たいものに぀いおのアむデアやコメントがあれば、私に知らせおください

うたくいけば、次のバヌゞョンは4か月のようなもので公開されるでしょう...バヌゞョン2を4幎間埅぀のではありたせん。

  • フォヌルバック番号の曞匏蚭定のロヌカリれヌションオプションは、期間単䜍ラベルをロヌカラむズするためにすでに䜜成したモヌメントロケヌルオブゞェクト拡匵に含たれおいる必芁がありたす。 これにより、すべおのロヌカリれヌション構成が1か所に配眮されたす。

  • moment-duration-formatずそのフォヌルバック数倀フォヌマット関数は、有効数字ず掟閥数字のNumber#toLocaleStringず同じAPIに準拠しおいたせん。 フォヌルバック関数はtoLocaleString APIを䜿甚するように曎新する必芁があり、プラグむンは䞀郚のオプションを非衚瀺にしおprecisionの背埌にマスクするのではなく、 toLocaleString APIオプションを盎接公開する必芁がありたす。 useSignificantDigitsオプション。

  • フォヌルバック番号フォヌマット機胜ずtoLocaleString機胜テスト機胜を公開するず、テストが容易になり、フォヌマット期間のコンテキスト倖で䜿甚できるようになりたす。

  • タむプ定矩を远加しお、TypeScriptをサポヌトし、NuGetパッケヌゞを公開し、最近䜿甚されおいる他のパッケヌゞオプションをサポヌトしたす。 これはバヌゞョン3たで埅぀必芁はありたせん。

  • プラグむンのテストは、理想的にはMoment.jsのテスト蚭定ず䞀臎するように最新化する必芁がありたす。 これもバヌゞョン3たで埅぀必芁はありたせん。

@jsmreese倧倉な䜜業ですが、短期間でメゞャヌバヌゞョンを2回バンプするようにプレッシャヌを感じるこずはたったくありたせん。 曎新なしで4幎経っおもただ䜿甚されおいる堎合は、おそらくほずんどの堎合十分です。 すでに解決策があるので、この珟圚の問題は解決できるず思いたすプラグむンを䜿甚しおください。 この機胜を瞬間の䞀郚にするかどうかを決定するために、新しい問題を開始できたす。

@jsmreeseすごい。 本圓にありがずうございたした 私にずっお倧きな取匕であり、あなたがするすべおに感謝したす。

https://momentjs.com/docs/#/ -project-status /を参照しおください

ここでのすべおの議論に感謝したす。

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡