gpt4 book ai didi

javascript - 如何检查数据时间是否有时区偏移?

转载 作者:行者123 更新时间:2023-12-05 03:28:01 26 4
gpt4 key购买 nike

我正在使用 Javascript 开发应用程序。在代码中,我收到了 Datetime。此日期时间可以有或没有时区偏移。我想检查时区偏移量是否存在,我需要根据它做出一些决定。

以下是将进入我的 Javascript 函数的数据类型:

const dateWithoutOffset = "2022-03-01T16:23:19"
const dateWithOffset = "2022-03-01T16:23:19+01:00"

//Perform something to check for offset
if(dateWithOffset.contains(offset)){
console.log("OFFSET is PRESENT")
}

//Perform something to check offset is not present
if(dateWithoutOffset.contains(offset)){
console.log("OFFSET IS NOT PRESENT")
}

我知道我可以检查长度,但我觉得这不是正确的方法,所以想到在这里询问并找到找到偏移量的正确方法。

我尝试了 Stackoverflow 中提供的许多方法和答案,但似乎没有一个能给我正确的答案,所以在此处发帖以获得正确的工作答案。

最佳答案

您可以使用正则表达式来解析这些 ISO 日期字符串的偏移量。

创建一些方便的函数,例如 hasOffset()getUTCOffsetMinutes() 应该可以使问题更容易解决。

如果日期有偏移量,您可以继续解析它(如下所示)或执行其他操作,例如以不同方式显示。

const isoDatePattern = /(\d{4}-\d{2}-\d{2})T(\d{2}:\d{2}:\d{2})(\.\d+)?([+-]\d{2}:?\d{2}|Z)$/

function getOffsetStr(input) {
const groups = input.match(isoDatePattern);
return groups ? groups[4]: null;
}

function hasOffset(input) {
return (!!getOffsetStr(input));
}

function getUTCOffsetMinutes(input) {
const offset = getOffsetStr(input);
return offset ? parseUTCOffset(offset): null;
}

function parseUTCOffset(offsetStr) {
if (offsetStr.toUpperCase() === 'Z') {
return 0;
}
const sign = offsetStr.startsWith('-') ? -1: 1;
const hour = +offsetStr.slice(1,3);
const min = +offsetStr.slice(-2);
return sign * hour * 60 + min;
}

const testInputs = [
"2010-11-06T02:19:00.250",
"2022-03-01T16:23:19",
"2025-04-20T17:02:03.401+0200",
"2022-03-01T16:23:19+01:00",
"2022-03-01T16:23:19Z",
"2022-03-01T16:23:19-0500",
"2022-03-01T16:23:19+12:00"
]

console.log('Input'.padEnd(28, ' '), 'Has Offset ' ,'UTC Offset (minutes)')
testInputs.forEach(input => {
console.log(input.padEnd(28, ' '), hasOffset(input), '\t', getUTCOffsetMinutes(input));
})
.as-console-wrapper { max-height: 100% !important; }

关于javascript - 如何检查数据时间是否有时区偏移?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71311085/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com