我有firebase格式的小时和分钟(无法更改):2230
我需要将此转换为正常日期,年,日和月是当前时间,仅指定小时和分钟
var startDate = new Date();
我需要设置这样的日期:
startDate.setHours(myhours, myminutes, myday, 0);
答案 0 :(得分:1)
一种简单的方法是创建一个新的Date
,然后只更新这些值:
const hours = 15; // 24-hour format, 0 = midnight, 15 = 3PM
const minutes = 45;
const d = new Date();
d.setHours(hours);
d.setMinutes(minutes);
d.setSeconds(0);
console.log(d);
这将为您提供一个Date
对象,其中包含当前时间(由客户端计算机定义),但小时和分钟设置为您指定的内容,秒数设置为0
(从15:45:58
很奇怪。
要将字符串转换为变量,只需执行以下操作:
const [, hours, minutes] = '2230'.match(/(\d{2})(\d{2})/).map(m => parseInt(m));
console.log(hours, minutes);
const d = new Date();
d.setHours(hours);
d.setMinutes(minutes);
d.setSeconds(0);
console.log(d);
请记住,它会假设您根据GMT(时区偏移+0000)设置它。如果你想要它相对于你的时间,要么改变日期对象(如果你只需要匹配它的值)或者改变你的时区偏移量。
const hour = 15;
const minute = 45;
const d = new Date();
d.setHours(hour - (d.getTimezoneOffset() / 60)); // adjust hour to local timezone
d.setMinutes(minute);
d.setSeconds(0);
console.log(d);