小时和分钟到时间戳 - Javascript

时间:2018-04-17 18:35:00

标签: javascript

我有firebase格式的小时和分钟(无法更改):2230

我需要将此转换为正常日期,年,日和月是当前时间,仅指定小时和分钟

var startDate = new Date();

我需要设置这样的日期:

startDate.setHours(myhours, myminutes, myday, 0);

1 个答案:

答案 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);