如何使用JavaScript date-fns库格式化特定时区的日期/时间

时间:2017-08-15 00:55:26

标签: javascript date datetime date-fns

有没有办法使用date-fns库格式化/输出指定时区的日期?我可以很容易地格式化日期:

format(
  new Date(),
  'MM/DD/YYYY'
)

我可以指定一个区域设置(来自他们的文档):

var eoLocale = require('date-fns/locale/eo')
var result = format(
  new Date(2014, 6, 2),
  'Do [de] MMMM YYYY',
  {locale: eoLocale}
)

如何指定时区?

2 个答案:

答案 0 :(得分:1)

恐怕您将不得不等time zone support in date-fns直到发布2.0版。时区支持has not been finished,并且它可能仅会添加到新版本中,因为新版本预计会改善解析和格式设置。

同时,您必须访问其他库,这些库允许在任意时区进行格式化。例如,Moment.jsDay.js

// Print "06/01/2014 6:00:00 PM GMT-0600 (EDT)"

moment('2014-06-02T00:00:00.000Z')
  .tz('America/New_York')
  .format('MM/DD/YYYY h:mm:ss A [GMT]ZZ (z)')

dayjs('2014-06-02T00:00:00.000Z')
  .format('MM/DD/YYYY h:mm:ss A [GMT]ZZ (z)',
          { timeZone: 'America/New_York' })

答案 1 :(得分:0)

版本 2 节省了时间!

  const { startOfDay, endOfDay, format } = require('date-fns') // or use imports
  const { enGb } = require('date-fns/locale/en-GB') // or use imports

  const fromDate = startOfDay(new Date('02-Aug-2001'))
  const toDate = endOfDay(new Date('02-Aug-2001'))
  const from = format(fromDate, 'dd-MMM-yyyy HH:mm:ss', { locale: enGb })
  const to = format(toDate, 'dd-MMM-yyyy HH:mm:ss', { locale: enGb })
  console.log(from) // 02-Aug-2001 00:00:00
  console.log(to) // 02-Aug-2001 23:59:59

https://date-fns.org/v2.21.1/docs/format // 官方文档

https://www.npmjs.com/package/date-fns-tz#user-content-format // 更具人类可读性的文档(注意不需要安装 date-fns-tz)