亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

如何將數字轉換為時間?

如何將數字轉換為時間?

哈士奇WWW 2021-12-02 20:00:21
我正在嘗試使用 date-fns 1.30.1 版或純 JavaScript 創建一個接受數字并返回時間戳 (HH:mm) 的函數。我想要實現的是在輸入時間時幫助用戶。當用戶離開輸入字段時,我使用 Vue.js 來更新該字段。因此,如果用戶鍵入 21 然后離開,則該字段最好更新為 21:00。一些例子是:21 = 21:00  1 = 01:00  24 = 00:00  2115 = 21:15  像 815 這樣的數字不必返回 08:15。像 7889 這樣的數字應該返回一個錯誤。我試過使用正則表達式:time = time    .replace(/^([1-9])$/, '0$1')    .replace(/^([0-9]{2})([0-9]+)$/, '$1:$2')    .replace(/^24/, '00:00')我也嘗試過在 date-fns 中使用 parse 方法,但似乎無法解決如何解決這個問題。
查看完整描述

2 回答

?
胡說叔叔

TA貢獻1804條經驗 獲得超8個贊

轉換基于<100(僅小時)和>=100(100*小時+分鐘),加上一些與24單位數(小時和分鐘)的斗爭:


function num2time(num){

  var h,m="00";

  if(num<100)

    h=num;

  else {

    h=Math.floor(num/100);

    m=("0"+(num%100)).slice(-2);

  }

  h=h%24;

  return ("0"+h).slice(-2)+":"+m;

}


console.log(num2time(8));

console.log(num2time(801));

console.log(num2time(24));

console.log(num2time(2401));

console.log(num2time(2115));

console.log(num2time("8"));

console.log(num2time("2115"));


原始答案,僅用于評論,但無法24正確處理或單位數分鐘:

例如,您可以進行非常機械的轉換


function num2time(num){

  if(num<10)

    t="0"+num+":00";

  else if(num<100)

    t=num+":00";

  else {

    if(num<1000)

      t="0"+Math.floor(num/100);

    else if(num<2400)

      t=Math.floor(num/100)

    else

      t="00";

    t+=":"+(num%100);

  }

  return t;

}


console.log(num2time(8));

console.log(num2time(2115));

console.log(num2time("8"));

console.log(num2time("2115"));


示例驗證:

function num2time(num){

  var h,m="00";

  if(num<100)

    h=num;

  else {

    h=Math.floor(num/100);

    m=("0"+(num%100)).slice(-2);

  }

  if(h<0 || h>24) throw "Hour must be between 0 and 24"

  if(m<0 || m>59) throw "Minute must be between 0 and 59"

  h=h%24;

  return ("0"+h).slice(-2)+":"+m;

}


var numstr=prompt("Enter time code");

while(true) {

  try {

    console.log(num2time(numstr));

    break;

  } catch(ex) {

    numstr=prompt("Enter time code, "+numstr+" is not valid\n"+ex);

  }

}


查看完整回答
反對 回復 2021-12-02
?
慕工程0101907

TA貢獻1887條經驗 獲得超5個贊

DateFns 實現


恕我直言,致力于添加和刪除分鐘和小時是管理此轉換的更簡潔的方法:


function formattedTime(val) {

  let helperDate; 

  if(val.length <= 2) {

   if(val > 24)return 'error';       

   helperDate = dateFns.addHours(new Date(0), val-1);   

   return dateFns.format(helperDate, 'HH:mm');

  }

  if(val.length > 2) {

   let hhmm = val.match(/.{1,2}/g);

   if(hhmm[0] > 24 || hhmm[1] > 60) return 'error';

   helperDate = dateFns.addHours(new Date(0), hhmm[0]-1);

   helperDate = dateFns.addMinutes(helperDate, hhmm[1]);

   return dateFns.format(helperDate, 'HH:mm');

  }

}


const myArr = [21, 1, 24, 2115, 815];


myArr.forEach(

  val => console.log(formattedTime(val.toString()))

)

<script src="https://cdnjs.cloudflare.com/ajax/libs/date-fns/1.30.1/date_fns.min.js"></script>



查看完整回答
反對 回復 2021-12-02
  • 2 回答
  • 0 關注
  • 986 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號