簡體   English   中英

JavaScript以12小時格式隨機生成時間

[英]JavaScript random generate time in 12-hour format

我嘗試隨機生成12小時格式的時間。 這是我的Java代碼:

randomTime = (hrs, mins) => {
  hrs = Math.round(Math.random()*hrs);
  mins = Math.round(Math.random()*mins);    
  var hFormat = (hrs<10 ? "0" : "");
  var mFormat = (mins<10 ? "0" : "");
  var amPm = (hrs<12 ? "AM" : "PM");
  return String(hFormat+hrs+ ":" +mFormat+mins+ " " +amPm);
}

我執行隨機生成時間的部分:

var myDate = new Date();
var hour = myDate.getUTCHours();
var minute = myDate.getMinutes();

var resultTime = this.randomTime(hour, minute);

我嘗試循環30次,但打印的分鍾僅是00或01等。小時工作正常,因為我得到了諸如9.00AM,12.00PM等一些值。

有任何想法嗎?

您不應在答案中混入當前日期。 這樣得出的結果並非純粹是隨機的。 用這個:

randomTime = () => {
  hrs = Math.round(Math.random() * 24);
  mins = Math.round(Math.random() * 60);    
  var hFormat = (hrs<10 ? "0" : "");
  var mFormat = (mins<10 ? "0" : "");
  var amPm = (hrs<12 ? "AM" : "PM");
  var is12 = (hrs % 12 === 0);

  return amPm === "AM" && !is12 ? String(hFormat+hrs+ ":" +mFormat+mins+ " " +amPm)
                : "AM" && is12  ? String(12 + ":" +mFormat+mins+ " " +amPm)
                : is12 ? String(hFormat+hrs+ ":" +mFormat+mins+ " " +amPm)
                : String(hFormat+(hrs-12)+ ":" +mFormat+mins+ " " +amPm);

}

var resultTime = this.randomTime();
console.log(resultTime);

注意:

進行正確正確的格式化可能很麻煩 ,例如,確保它顯示12:03 AM而不是00:03 AM 這就是為什么作為練習,使用香草javascript手工制作這些效果很好的原因,但是在生產中,使用諸如moment.js之類的庫通常更明智。

您不應該過去當前時間。 您將分鍾數限制為該函數運行一小時后的當前分鍾數。 嘗試將小時數限制為12,將分鍾數限制為60。

 randomTime = () => { hrs = Math.round(Math.random()*12); mins = Math.round(Math.random()*60); var hFormat = (hrs<10 ? "0" : ""); var mFormat = (mins<10 ? "0" : ""); var amPm = (hrs<12 ? "AM" : "PM"); return String(hFormat+hrs+ ":" +mFormat+mins+ " " +amPm); } var resultTime = this.randomTime(); console.log( resultTime ); 

編輯 @Sventies擊敗我,去投票給他

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM