date-fns:解析具有给定格式的日期字符串
date-fns: Parse date string with given format
我想在我的一个项目中用 date-fns
替换 moment
。
从 moment
开始,我只使用解析和时区(moment-timezone
)功能:
const moment = require('moment-timezone')
const parseDatetime = function parseDatetime (datetime, format, tz = 'Europe/Paris', locale = 'fr') {
return +moment.tz(datetime, format, locale, tz)
}
parseDatetime('jeudi 23 janvier 13:18:23', 'dddd DD MMMM HH:mm:ss')
// => 1579781903000
// Which outputs « 2020-01-23T12:18:23.000Z » (as expected) when given to Date constructor
使用date-fns
,我尝试了format
功能(这似乎是我需要的):
const format = require('date-fns/format')
const fr = require('date-fns/locale/fr')
format('jeudi 23 janvier 13:18:23', 'EEEE dd MMMM HH:mm:ss', {
locale: fr
})
首先,我不知道是否应该使用 MMMM
或 LLLL
来表示语言环境格式中的月份。
无论如何,我收到以下错误:
Starting with v2.0.0-beta.1 date-fns doesn't accept strings as arguments. Please use `parseISO` to parse strings. See: https://git.io/fjule
所以我查看了有关 parseISO
的文档,其中指出它将« 解析 ISO 8601 格式的给定字符串和 return Date 的实例。»。这是我需要的 NOT,因为我的日期字符串不是 ISO 8601 格式或任何其他 ISO 格式。
我找到了 parse
函数,它似乎更适合我的用例。所以我试过了:
const parse = require('date-fns/parse')
const fr = require('date-fns/locale/fr')
parse('jeudi 23 janvier 13:18:23', 'EEEE dd MMMM HH:mm:ss', Date(), {
locale: fr
})
这给了我与 format
完全相同的错误!!!这种行为很奇怪,因为 parse
的文档指出 dateString
参数是……一个字符串 !
所以,我实际上迷失在这个问题上,如果它是一个问题的话。
有人可以给我一些帮助/见解吗?
你离它很近了。
const ParseDate = require('date-fns/parse') // https://date-fns.org/docs/
const DateFrench = require('date-fns/locale/fr')
let stringDate = 'jeudi 23 janvier 13:18:23'
console.log(ParseDate(stringDate, 'EEEE dd MMMM HH:mm:ss', new Date(), { locale: DateFrench }))
=> 2020-01-23T12:18:23.000Z
我想在我的一个项目中用 date-fns
替换 moment
。
从 moment
开始,我只使用解析和时区(moment-timezone
)功能:
const moment = require('moment-timezone')
const parseDatetime = function parseDatetime (datetime, format, tz = 'Europe/Paris', locale = 'fr') {
return +moment.tz(datetime, format, locale, tz)
}
parseDatetime('jeudi 23 janvier 13:18:23', 'dddd DD MMMM HH:mm:ss')
// => 1579781903000
// Which outputs « 2020-01-23T12:18:23.000Z » (as expected) when given to Date constructor
使用date-fns
,我尝试了format
功能(这似乎是我需要的):
const format = require('date-fns/format')
const fr = require('date-fns/locale/fr')
format('jeudi 23 janvier 13:18:23', 'EEEE dd MMMM HH:mm:ss', {
locale: fr
})
首先,我不知道是否应该使用 MMMM
或 LLLL
来表示语言环境格式中的月份。
无论如何,我收到以下错误:
Starting with v2.0.0-beta.1 date-fns doesn't accept strings as arguments. Please use `parseISO` to parse strings. See: https://git.io/fjule
所以我查看了有关 parseISO
的文档,其中指出它将« 解析 ISO 8601 格式的给定字符串和 return Date 的实例。»。这是我需要的 NOT,因为我的日期字符串不是 ISO 8601 格式或任何其他 ISO 格式。
我找到了 parse
函数,它似乎更适合我的用例。所以我试过了:
const parse = require('date-fns/parse')
const fr = require('date-fns/locale/fr')
parse('jeudi 23 janvier 13:18:23', 'EEEE dd MMMM HH:mm:ss', Date(), {
locale: fr
})
这给了我与 format
完全相同的错误!!!这种行为很奇怪,因为 parse
的文档指出 dateString
参数是……一个字符串 !
所以,我实际上迷失在这个问题上,如果它是一个问题的话。
有人可以给我一些帮助/见解吗?
你离它很近了。
const ParseDate = require('date-fns/parse') // https://date-fns.org/docs/
const DateFrench = require('date-fns/locale/fr')
let stringDate = 'jeudi 23 janvier 13:18:23'
console.log(ParseDate(stringDate, 'EEEE dd MMMM HH:mm:ss', new Date(), { locale: DateFrench }))
=> 2020-01-23T12:18:23.000Z