您好,登錄后才能下訂單哦!
JavaScript沒有短缺Date()
自從該對象在很多生命周期前就被引入以來,相關的冒險就開始了,盡管它們在很大程度上局限于檢索和操作用戶系統的本地時間。使用JavaScript獲取特定位置的日期和時間一直是一件難以捉摸的事情,因為Date
對象本身就對用戶計算機的時間進行操作。當有Date
方法,例如Date.getTimezoneOffset()
和Date.getUTCDate()
以幫助我們獲得世界時間,從這里開始,在復雜的國際時間規則世界中航行,比如在特定時區的夏令節約時間,然后我們才能可靠地到達彩虹的盡頭,也就是世界上某個特定地點的時間,這是一個滑坡路。我們需要的是一個時區數據庫和夏令節約時間規則,以消除僅依靠用戶的本地時間來獲得地球上特定位置的時間的所有復雜性和錯誤性。那就是Google的時區API派上用場:
洛杉磯時間:下午10:08:38 (Wed)
多倫多時間:上午1:08:38 (Thur)
AM
巴黎時間
Google的Timezone API提供一個簡單的接口來獲取地球上任何位置的時區和DST(夏令時)偏移量。要使用它,只需請求:
https://maps.googleapis.com/maps/api/timezone/json/?parameters
哪里“杰森“可以用字符串替換”XML“如果您希望返回的數據是XML格式,而不是JSON格式,那么parameters
應包括以下3條信息:
Google時區API調用的預期參數:
location
以逗號分隔的緯度和經度元組(即:location=37.3711, -122.0375
),表示要查找的確切位置。
timestamp:
所需的日期和時間,以秒表示,從1970年1月1日午夜開始。API使用 timestamp
確定是否應用夏令節余。1970年以前的時間可以表示為負值。
key:
應用程序的API密鑰。這個免費的密鑰是需要從您的網站向API提出請求。
我們將在下一節中詳細介紹如何定義前兩個參數,盡管在此之前,您需要首先獲得一個GoogleAPI密鑰才能從您的站點訪問時區API。要做到這一點,只需按照本頁。如果您已經設置了一個API鍵,并且希望再次修改或撤回它,那么直接跳到Google控制臺頁面.
下面是一個完全正確的時區API調用字符串的示例加拿大溫哥華日期2016年11月4日:
https://maps.googleapis.com/maps/api/timezone/json?location=49.283436, -123.130429×tamp=1478880000&key=YOUR_API_KEY
返回的數據:
例如,調用完成后,通過Ajax返回的數據以JSON字符串的形式出現:
1 2 3 4 5 6 7 |
|
在加拿大溫哥華,2016年夏令時間將于3月13日至11月6日生效。由于所要求的日期2016年11月4日在這一范圍內,返回的數據反映了這一點。這,這個,那,那個"dstOffset"
參數(以秒為單位)告訴我們該時間和位置,DST(夏令節)偏移量相對于世界時是1小時(3600秒)。“rawOffset
“屬性告訴我們此時區相對于世界時的標準偏移量(以秒為單位),撇開從任何夏令節余中抵消。
簡而言之,任何位置的本地時間都是通過添加timestamp
“參數和返回的"dstOffset"
,和“rawOffset
“共同的價值觀。但這只是一個太簡單的解釋,所以讓我們繼續挖掘。
讓我們把所有這些理論運用到實際中去,得到世界上某一特定地點的當前日期和時間。東京怎么樣?曾經去過那里,愛過一切,除了昂貴的交通!我們需要東京的緯度和經度坐標,加上當前的世界日期和時間,從1970年1月1日午夜開始,世界協調時間為“timestamp
“參數以構造相應的時區請求:
1 2 3 4 5 6 |
|
讓我們來看看我們是如何導出上述值的:
-獲取位置的緯度和經度
要使用GoogleMaps獲取位置的緯度和經度,請在GoogleMaps中輸入所需的地址(在本例中為“東京日本”)并按下進入。然后右擊在地圖上的位置名稱(“東京”)上顯示上下文菜單。選擇并單擊菜單項“這是什么“拿出一張位置卡,上面顯示著它的緯度和經度:
或者,您也可以使用類似于latlong.net得到那些神秘的數字。
-得到timestamp
任何日期的值
這,這個,那,那個timestamp
Google時區API的參數期望所需的日期和時間從1970年1月1日午夜開始以秒為單位表示。對于當前時間,計算方法是先實例化Date對象以獲取用戶計算機的當前本地時間,然后使用以下方法添加UTC偏移量(以分鐘為單位)Date.getTimezoneOffset():
1 2 |
|
因為timestamp
參數應該以秒為單位,我們做一個小的數學把當前的日期和它的UTC偏移到那個單位。這里有一個時間戳,代表從1970年世界協調時1月1日午夜開始的時間和日期,正如醫生所吩咐的。
如果您感興趣的目標日期不是當前日期/時間,只需將特定日期字符串傳入new Date()
實例化它時,例如:
1 |
|
這對于未來或過去的相關應用都是有用的,比如追溯到2025年的圣誕節東京時間。見在這里實例化日期對象的各種方法.
在最后apicall
變量現在包含我們可以發出的Google時區請求,以獲取一些有用的信息:
1 |
|
現在,我們已經準備好使用Ajax來接電話,并使用前面構建的請求字符串調用時區API。返回的數據為我們提供了東京的正確時區和DST偏移量,然后我們可以使用這些數據來確定該城市的正確日期和時間:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
|
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。