JavaScript随机生成12小时格式的时间

时间:2017-07-25 12:06:02

标签: javascript

我试图以12小时格式随机生成时间。这是我在Javascript中的代码:

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等。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

您不应该在答案中混合当前日期。这给出的结果不是纯粹随机的。使用此:

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这样的库通常更明智。

答案 1 :(得分:0)

你现在不应该过世。您将分钟限制为函数运行时的当前小时数。试试这个时间限制为12小时,限制为60分钟。

&#13;
&#13;
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 );
&#13;
&#13;
&#13;

编辑 @Sventies打败了我,向上投票