簡體   English   中英

如何使用 JavaScript date-fns 庫格式化特定時區中的日期/時間

[英]How to format date/time in a specific timezone with the JavaScript date-fns library

有沒有辦法使用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}
)

如何指定時區?

恐怕您將不得不等待date-fns時區支持,直到 2.0 版發布。 時區支持尚未完成,可能只會添加到新版本中,預計會改進解析和格式。

同時,您必須訪問其他庫,這些庫允許在任意時區進行格式化。 例如, Moment.jsDay.js

// Print "06/01/2014 8:00:00 PM GMT-0400 (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' })

將結果插入到 HTML 的可運行代碼片段:

 // Initialise day.js extensions dayjs.extend(dayjs_plugin_timeZone) // Prepare the canvas const output = document.getElementById('output') output.innerHTML = 'Expected: 06/01/2014 8:00:00 PM GMT-0400 (EDT)\\n' // Print "06/01/2014 8:00:00 PM GMT-0400 (EDT)" const date1 = moment('2014-06-02T00:00:00.000Z') .tz('America/New_York') .format('MM/DD/YYYY h:mm:ss A [GMT]ZZ (z)') output.innerHTML += `Moment.js: ${date1}\\n` const date2 = dayjs('2014-06-02T00:00:00.000Z') .format('MM/DD/YYYY h:mm:ss A [GMT]ZZ (z)', { timeZone: 'America/New_York' }) output.innerHTML += `Date.js: ${date2}\\n`
 <script src="https://unpkg.com/moment@2.24.0/min/moment-with-locales.min.js"></script> <script src="https://unpkg.com/moment-timezone@0.5.25/builds/moment-timezone-with-data.min.js"></script> <script src="https://unpkg.com/timezone-support@1.8.1/dist/lookup-convert.umd.js"></script> <script src="https://unpkg.com/timezone-support@1.8.1/dist/data.umd.js"></script> <script src="https://unpkg.com/dayjs-ext@2.2.0/dayjs.min.js"></script> <script src="https://unpkg.com/dayjs-ext@2.2.0/plugin/timeZone.js"></script> <pre id="output"></pre>

版本 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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM