我试图以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等。
有什么想法吗?
答案 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分钟。
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;
编辑 @Sventies打败了我,向上投票