日期-fns。用给定的格式解析日期字符串。

问题描述 投票:0回答:1

我想更换 momentdate-fns 在我的一个项目中。

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
})

首先,我不知道是否应该使用 MMMMLLLL 为locale格式的月份。

总之,我得到以下错误。

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格式解析给定的字符串,并返回一个Date的实例。 ». 这就是 我所需要的,因为我的日期字符串不是ISO 8601格式或任何其他ISO格式。

我发现 parse 函数,这似乎更适合我的用例。所以我尝试了.NET函数。

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 参数是......一个字符串!

所以,我对这个问题其实很迷茫,如果它是一个问题的话。

谁能给我一些关于这个问题的帮助?

momentjs date-fns
1个回答
0
投票

你非常接近它。

 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

© www.soinside.com 2019 - 2024. All rights reserved.