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