第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

給定月份的 Javascript 返回時間字符串

給定月份的 Javascript 返回時間字符串

絕地?zé)o雙 2022-12-29 09:59:23
我正在尋找一個 JS 庫/實用程序/函數(shù),您可以在其中給它指定月數(shù),它會返回它的人類可讀版本。我?guī)缀跻呀?jīng)在 Vanilla JS 中完成了,但現(xiàn)在我發(fā)現(xiàn)有很多邊緣情況我不想重新發(fā)明輪子。例子func(3) => "3 Months"func(1) => "1 Month" // singularfunc(0.1) => "1 Week"func(0.25) => "2 Weeks"func(13) => "1 year and 1 month"func(14) => "1 year and 2 months"func(14.25) => "1 year, 2 months and two weeks"......etc問題陳述:我不想重新發(fā)明輪子,看看有沒有像上面那樣目前正在做日期轉(zhuǎn)換的庫。
查看完整描述

3 回答

?
慕桂英546537

TA貢獻1848條經(jīng)驗 獲得超10個贊

使用moment.js:


Date.getFormattedDateDiff = function (date1, date2) {

  var b = moment(date1),

    a = moment(date2),

    intervals = ['year', 'month', 'week', 'day'],

    out = [];


  for (var i = 0; i < intervals.length; i++) {

    var diff = a.diff(b, intervals[i]);

    b.add(diff, intervals[i]);

    if (diff == 0)

      continue;

    out.push(diff + ' ' + intervals[i] + (diff > 1 ? "s" : ""));

  }

  return out.join(', ');

};


function OutputMonths(months) {

  var newYear = new Date(new Date().getFullYear(), 0, 1);

  var days = (months % 1) * 30.4167;


  var newDate = new Date(newYear.getTime());

  newDate.setMonth(newDate.getMonth() + months);

  newDate.setDate(newDate.getDate() + days);


  console.log('Number of months: ' + Date.getFormattedDateDiff(newYear, newDate));

}


OutputMonths(3);

OutputMonths(1);

OutputMonths(0.1);

OutputMonths(0.25);

OutputMonths(13);

OutputMonths(14);

OutputMonths(14.25);

<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.27.0/moment.min.js"></script>


查看完整回答
反對 回復(fù) 2022-12-29
?
拉丁的傳說

TA貢獻1789條經(jīng)驗 獲得超8個贊

這取決于您的“人類可讀版本”版本是什么。您可以簡單地將您的月份數(shù)字轉(zhuǎn)換為天數(shù)并從那里開始工作。由于您在示例案例中包含了年、月和周,因此您所需要的就是這個。

function func(months) {

    let days = months * 30.5; // Average days in a month

    let y = 0, m = 0, w = 0;

    while (days >= 365) {y++;days -= 365;}

    while (days >= 30.5) {m++;days -= 30.5;}

    while (days >= 7) {w++;days -= 7;}

    let out = 

        (y ? (`${y} Year` + (y > 1 ? "s " : " ")) : "") +

        (m ? (`${m} Month` + (m > 1 ? "s " : " ")) : "") +

        (w ? (`${w} Week` + (w > 1 ? "s " : " ")) : "");

    console.log(out);

}

func(10);

func(3);

func(1);

func(0.1);

func(0.25);

func(13);

func(14);

func(14.25);

越簡單越好,特別是當它是一個如此簡單的問題時。您不想為此使用庫來膨脹您的應(yīng)用程序。




查看完整回答
反對 回復(fù) 2022-12-29
?
慕神8447489

TA貢獻1780條經(jīng)驗 獲得超1個贊

console.log(moment.duration(40, 'months').toISOString());
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.20.1/moment.min.js"></script>

http://img1.sycdn.imooc.com//63acf4af0001fc7221111235.jpg

也看看https://github.com/codebox/moment-precise-range


查看完整回答
反對 回復(fù) 2022-12-29
  • 3 回答
  • 0 關(guān)注
  • 148 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號