[英]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.js或Day.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.