我用 Confluence 中的 Confiforms 制作了一個表格,其中包括一個波斯日歷欄位。有一個過濾器控制宏來過濾記錄。但是這個過濾器不適用于波斯日期。因為波斯日期保存為時間戳,但波斯日歷欄位顯示日期,而不是時間戳,當我想過濾記錄時,我應該在波斯日歷欄位中寫入時間戳以使過濾器起作用。
表格截圖
問題是我希望當我選擇一個日期時,它將其時間戳而不是日期回傳到該欄位。(見圖片)
是否有任何 JavaScript/jQuery 代碼可以將欄位的波斯日期條目轉換為時間戳?
編輯:欄位輸入的 shamsi 日期格式為 dm-yy(例如 15-12-1400)
uj5u.com熱心網友回復:
以下函式將波斯 (Jalali) 日期轉換為時間戳(基于 UTC)。
您將 Jalali 的年、月和日傳遞給函式,輸出是 UTC 區域中的時間戳。
function jalaliToUTCTimeStamp(year, month, day) {
const format=new Intl.DateTimeFormat('en-u-ca-persian',{dateStyle:'short',timeZone:"UTC"});
let g=new Date(Date.UTC(2000,month,day));
g=new Date(g.setUTCDate(g.getUTCDate() 226867));
const gY=g.getUTCFullYear(g)-2000 year;
g=new Date(((gY<0)?"-":" ") ("00000" Math.abs(gY)).slice(-6) "-" ("0" (g.getUTCMonth(g) 1)).slice(-2) "-" ("0" (g.getUTCDate(g))).slice(-2));
let [pM,pD,pY] = [...format.format(g).split("/")],i=0;
g=new Date(g.setUTCDate(g.getUTCDate() ~~(year*365.25 month*30.44 day-(pY.split(" ")[0]*365.25 pM*30.44 pD*1))-2));
while (i<4){
[pM,pD,pY]=[...format.format(g).split("/")];
if(pD==day && pM==month && pY.split(" ")[0]==year)return g;
g=new Date(g.setUTCDate(g.getUTCDate() 1)); i ;
}
throw new Error('Invalid Persian Date!');
}
//==========================================================
// Test Units
//==========================================================
console.log(jalaliToUTCTimeStamp(1400,12,5));
console.log(jalaliToUTCTimeStamp(1400,12,6));
console.log(jalaliToUTCTimeStamp(1400,12,7));
console.log(jalaliToUTCTimeStamp(1400,12,8));
console.log(jalaliToUTCTimeStamp(1400,12,9));
console.log(jalaliToUTCTimeStamp(1400,12,10));
console.log(jalaliToUTCTimeStamp(1400,12,11));
//==========================================================
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/436873.html
標籤:javascript jQuery 约会时间 合流 jalali日历
上一篇:即使在更改網站時區后,Azure函式輸出路徑回傳UTC時間?
下一篇:R:將時間序列拆分為自定義季節
