簡體   English   中英

時區獨立格式日期-fns

[英]timezone independent formatting date-fns

目前我正在使用date-fns服務器端在保存到數據庫之前將元數據添加到某些記錄:

function getDateFormat(serverMillisTimestamp) {
  const current_unix = Math.round(serverMillisTimestamp / 1000)
  return {
    year: format(fromUnixTime(current_unix), 'yyyy').toString(),
    monthOfYear: format(fromUnixTime(current_unix), 'MMMM')
      .toString()
      .toLowerCase(),
    isoWeekOfYear: format(fromUnixTime(current_unix), 'II').toString(),
    dayOfMonth: format(fromUnixTime(current_unix), 'dd').toString(),
    isoDayOfWeek: format(fromUnixTime(current_unix), 'iiii')
        .toString()
        .toLowerCase()
  }
}

但是在客戶端,當我使用相同的代碼生成 year、monthofYear、isoWeekOfYear、dayOfMonth 和 isoDayOfWeek 以便我可以從數據庫中查詢記錄時,存在不匹配,因為格式使用區域設置時區來獲取這些值。

我如何利用date-fns使格式化的值與時區無關?

嘗試這樣的事情:

import {format} from "date-fns";
import {utcToZonedTime} from "date-fns-tz";

function getDateFormat(serverMillisTimestamp) {
  const utcTime = utcToZonedTime(serverMillisTimestamp, "UTC");
  return {
    year: format(utcTime, "yyyy").toString(),
    monthOfYear: format(utcTime, "MMMM").toString().toLowerCase(),
    isoWeekOfYear: format(utcTime, "II").toString(),
    dayOfMonth: format(utcTime, "dd").toString(),
    isoDayOfWeek: format(utcTime, "iiii").toString().toLowerCase(),
  };
}

const date = new Date();
console.log(getDateFormat(date.getTime()));

暫無
暫無

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

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