用JS將指定時間轉化成使用者當地時區的時間

2022-01-24 04:56:02 字數 1977 閱讀 3755

公司的專案是面向海外使用者的,但是最初的設計沒考慮到時差問題,存入資料庫的時間都是東八區的時間,導致現在補救有點坑爹......

有乙個需求是,產品詳細頁需要註明此款產品的開售時間,當海外的使用者來訪問這個頁面時,不應該顯示的是東八區的時間,而應該顯示當地時區對應的時間。

.net的類庫里沒有獲取客戶端當地時區的方法的,比如tolocaltime(),獲取的是伺服器的時間,timezoneinfo裡的一些方法,都是正向轉化,必須提供已知的時區編號,時區名稱等條件,但這些不是已知時,都是白搭。

查詢了資料,發現只能從js入手,看到有兩種解決方案,一種是用ajax傳到服務端進行處理,第二種是設定cookie在服務端獲取再處理,如果不是大批量的資料呈現,感覺有點麻煩,之後自己寫了乙個方法,具體方案就是從後台讀取的時間,先從前台的js裡轉化,再呈現到頁面上,具體看業務需求。

直接提供js方法吧,如有什麼不對的地方可以提出來:

/*

* 根據日期寫入時所在的時區號,傳化為客戶端所在時區的時間

* 東:負數,西:正數

* create date:2016-01-27 by harry

*/date.prototype.tolocaltimebyzonenum = function

(zonenum)

//預設傳入東八區

date.prototype.tolocaltime = function

() /*

* 轉化成國外常用顯示格式

* 1:mon feb 01 2016 12:00:00

* 2:mon feb 01 2016

* 3:feb 01 2016

* 4:feb 01,2016

* create date:2016-01-28 by harry

*/date.prototype.toglobaltime = function

(type) )/, "$1\n,");

break

;

default

:

return

this

;

break

; }

}附加兩個拓展方法,網上搜來的

//對date的擴充套件,將 date 轉化為指定格式的string

//月(m)、日(d)、小時(h)、分(m)、秒(s)、季度(q) 可以用 1-2 個佔位符,

//年(y)可以用 1-4 個佔位符,毫秒(s)只能用 1 個佔位符(是 1-3 位的數字)

//example: (new date()).format("yyyy-mm-dd hh:mm:ss.s") ==> 2006-07-02 08:09:04.423

date.prototype.format = function

(fmt) ;

if (/(y+)/.test(fmt))

fmt = fmt.replace(regexp.$1, (this.getfullyear() + "").substr(4 - regexp.$1.length));

for (var k in

o)

if (new regexp("(" + k + ")").test(fmt))

fmt = fmt.replace(regexp.$1, (regexp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" +o[k]).length)));

return

fmt;}/*

** 更改日期

* y年, m月, d日, h小時, n分鐘,s秒

* example: new date().add("d",-1)

*/date.prototype.add = function

(part, value)

switch

(part)

}

unity C 把指定時間轉化成時間戳

比如今天的晚上八點 datetime today newdatetime now.year,now.month,now.day,20,0,0 system.datetime starttime timezone.currenttimezone.tolocaltime new system.datet...

C 將秒數轉化成任意時間格式

將秒數轉化成任意時間格式,可以使用c 的乙個函式timespan,看示例 timespan ts new timespan 0,0,3661 richtextbox2.text ts.hours 小時 ts.minutes 分鐘 ts.seconds 秒 也可以使用傳統的方法,看示例 int tot...

JS將字串轉化成數字

轉換成數字 ecmascript提供了兩種把非數字的原始值轉換成數字的方法,即parseint 和parsefloat 正如你可能想到的,前者把值轉換成整數,後者把值轉換成浮點數。只有對string型別呼叫這些方法,它們才能正確執行 對其他型別返回的都是nan。在判斷字串是否是數字值前,parsei...