使用时区和星期几名称字符串格式化完整日期
format a full date with timezone and day of the week name string
我正在尝试使用 date-fns v2.21.3
在 NodeJS javascript 中从字符串 01:03:55.065 GMT Tue Mar 16 2021
创建一个日期对象,但我不介意使用常规 javascript 日期.
这是我的代码:
const df = require('date-fns');
const setupTime = '01:03:55.065 GMT Tue Mar 16 2021';
const ret = df.parse(setupTime,'HH:mm:ss.SSS zzz EEE dd yyyy',Date.now());
console.info(ret);
看起来 format()
和 parse()
可能没有相同的格式字符串?
当我尝试执行这段代码时,我得到:
RangeError: Format string contains an unescaped latin alphabet character `z`
at Object.parse (/Volumes/osx-storage/projects/vocalix/parse-date-fns/node_modules/date-fns/parse/index.js:486:15)
at Object.<anonymous> (/Volumes/osx-storage/projects/vocalix/parse-date-fns/index.js:4:16)
at Module._compile (node:internal/modules/cjs/loader:1108:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1137:10)
at Module.load (node:internal/modules/cjs/loader:988:32)
at Function.Module._load (node:internal/modules/cjs/loader:828:14)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:76:12)
at node:internal/main/run_main_module:17:47
现在..因为我收到的数据总是有GMT
,我试着忽略时区并做:
const ret = df.parse(setupTime,"HH:mm:ss.SSS 'GMT' EEE dd yyyy",Date.now());
但这会产生输出 Invalid Date
.
有包 date-fns-tz
但它不包含它自己的格式功能,所以它在这里不相关。
有什么解决这个问题的想法吗?
谢谢
也许这个简单的 JavaScript 解决方案对您有帮助?
const d = "01:03:55.065 GMT Tue Mar 16 2021";
function parseDate(s){
const a = s.split(" ");
return new Date([a[4],a[3],a[5],a[0]+"Z"].join(" "))
}
console.log(parseDate(d));
它与标准日期构造函数一起工作,接受字符串作为输入。
我正在尝试使用 date-fns v2.21.3
在 NodeJS javascript 中从字符串 01:03:55.065 GMT Tue Mar 16 2021
创建一个日期对象,但我不介意使用常规 javascript 日期.
这是我的代码:
const df = require('date-fns');
const setupTime = '01:03:55.065 GMT Tue Mar 16 2021';
const ret = df.parse(setupTime,'HH:mm:ss.SSS zzz EEE dd yyyy',Date.now());
console.info(ret);
看起来 format()
和 parse()
可能没有相同的格式字符串?
当我尝试执行这段代码时,我得到:
RangeError: Format string contains an unescaped latin alphabet character `z`
at Object.parse (/Volumes/osx-storage/projects/vocalix/parse-date-fns/node_modules/date-fns/parse/index.js:486:15)
at Object.<anonymous> (/Volumes/osx-storage/projects/vocalix/parse-date-fns/index.js:4:16)
at Module._compile (node:internal/modules/cjs/loader:1108:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1137:10)
at Module.load (node:internal/modules/cjs/loader:988:32)
at Function.Module._load (node:internal/modules/cjs/loader:828:14)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:76:12)
at node:internal/main/run_main_module:17:47
现在..因为我收到的数据总是有GMT
,我试着忽略时区并做:
const ret = df.parse(setupTime,"HH:mm:ss.SSS 'GMT' EEE dd yyyy",Date.now());
但这会产生输出 Invalid Date
.
有包 date-fns-tz
但它不包含它自己的格式功能,所以它在这里不相关。
有什么解决这个问题的想法吗?
谢谢
也许这个简单的 JavaScript 解决方案对您有帮助?
const d = "01:03:55.065 GMT Tue Mar 16 2021";
function parseDate(s){
const a = s.split(" ");
return new Date([a[4],a[3],a[5],a[0]+"Z"].join(" "))
}
console.log(parseDate(d));
它与标准日期构造函数一起工作,接受字符串作为输入。