我有一个如下所示的日期时间字符串:
Thu Aug 15 2019 07:15:03 GMT+0100 (British Summer Time)
我需要从字符串中获取小时,以便可以在变量中使用它。
例如,我在上面的字符串中寻找的结果将是:07
我该怎么做?
答案 0 :(得分:1)
var d = new Date("Thu Aug 15 2019 07:15:03 GMT+0100 (British Summer Time)")
console.log(d.getHours());
答案 1 :(得分:1)
您可以从字符串创建Date对象,然后从中提取小时数。
var date = new Date("Thu Aug 15 2019 07:15:03 GMT+0100 (British Summer Time)");
var hours = date.getHours(); // -> 8
// If you want a leading zero for 1 digit hours
if(hours < 10) hours = "0" + hours; // -> "08"
答案 2 :(得分:1)
如上面的答案所述,类似:
new Date("Thu Aug 15 2019 07:15:03 GMT+0100 (British Summer Time)").getHours()
...将返回日期中的小时部分,但是需要注意三件事:
getUTCHours()
,它总是返回小时数用于UTC。)如果您始终希望获得原始日期中提供的小时,则使用正则表达式解析从日期开始的小时会是一个更好的主意。但是,正则表达式的外观取决于您对各种原始日期/时间格式的灵活性要求。
为获得更大的灵活性,您可以像这样解析日期/时间:
const dateStr = 'Thu Aug 15 2019 07:15:03 GMT+0100 (British Summer Time)';
const date = new Date(dateStr);`
...然后还解析给定的原始小时偏移量:
const parts = /(?:GMT|UTC)([-+])(\d\d)(\d\d)/.exec(dateStr);
const offsetMinutes = parts ? (parseInt(parts[2]) * 60 + parseInt(parts[3])) * (parts[1] === '-' ? -1 : 1) : 0;
然后,通过做更多的工作,将其转换为您喜欢的任何时区偏移量。
请注意,时区偏移量并不总是整个小时,因此一个时区中可能会有两个不同的小时,而另一个时区中会匹配一个小时,具体取决于小时数。
哦,还有一件事...
使用此正则表达式:
/[T ](\d{1,2}):/.exec(dateStr)[1]
(T
之后有一个空格)
...将非常可靠地从最初的日期中提取各种日期/时间字符串。上面的代码被编写为正则表达式不会失败。将其分解为测试/[T ](\d{1,2}):/.exec(dateStr)
不是null
之前,再使用[1]
提取小时以获得更可靠的代码。
答案 3 :(得分:0)
如果您希望精确地输入小时数字符串,则可以进行以下处理:
new Date().getHours().toString().padStart(2, '0');
它将:
1)将小时数提取为数字(<10时为单个数字)
2)将其转换为字符串
3)小于10时添加前导零
答案 4 :(得分:0)
@onik的代码看起来不错,但是由于某种原因,它返回小时+ 1
var hour = new Date("Thu Aug 15 2019 07:15:03 GMT+0100 (British Summer Time)")
console.log(hour.getHours());
// returns hour + 1 for some reason
宁可这样做
var hour = new Date("Thu Aug 15 2019 07:15:03 GMT+0100 (British Summer Time)")
console.log(hour.getHours() - 1);
在下面运行摘要,亲自看看
答案 5 :(得分:0)
这将是24小时制,值介于0-23之间,因此我们必须添加+1
var d = new Date("Thu Aug 15 2019 07:15:03 GMT+0100 (British Summer Time)")
let hourtime=document.getElementById('hourtime');
hourtime.innerHTML=d.getUTCHours()+1
<strong id="hourtime"></strong>
答案 6 :(得分:0)
在es6中,
logSh5(int, int):
mov ecx, esi
mov eax, 2147483647
sar eax, cl
sar edi, cl
lea eax, [rax+1+rax]
and eax, edi
ret
构造一个具有给定时间的日期对象,现在获得一个小时数
const MyDate = new Date("Thu Aug 15 2019 07:15:03 GMT+0100 (British Summer Time)")