日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
聽干貨君聊項(xiàng)目多時(shí)區(qū)處理

 為什么要講一下這個(gè)問題呢?

瑤海網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián),瑤海網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為瑤海成百上千提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)營銷網(wǎng)站建設(shè)要多少錢,請(qǐng)找那個(gè)售后服務(wù)好的瑤海做網(wǎng)站的公司定做!

很多時(shí)候在項(xiàng)目的開發(fā)中或許沒有接觸過多時(shí)區(qū),項(xiàng)目大多是部署國內(nèi),同時(shí)僅僅為國內(nèi)用戶提供服務(wù),一旦當(dāng)用戶到國外后,項(xiàng)目中的很多時(shí)間都變得與當(dāng)?shù)貢r(shí)間不一樣,對(duì)用戶非常不友好。例如近幾年非?;鸬木€上教育,像一些外籍老師,教小朋友學(xué)英文,如何保證雙方在特定的時(shí)間都進(jìn)入教室,變得非常常見。

對(duì)于多時(shí)區(qū)用戶提供服務(wù),業(yè)界如何處理時(shí)間呢?

在講述業(yè)界的處理之前,我們先來了解幾個(gè)概念。

時(shí)間戳,是指格林尼治時(shí)間1970年01月01日00時(shí)00分00秒(北京時(shí)間1970年01月01日08時(shí)00分00秒)起至現(xiàn)在的總秒數(shù),用有符號(hào)32位整數(shù)表示。

GMT:Greenwich Mean Time 格林尼治標(biāo)準(zhǔn)時(shí)間。這是以英國格林尼治天文臺(tái)觀測(cè)結(jié)果得出的時(shí)間,這是英國格林尼治當(dāng)?shù)貢r(shí)間,這個(gè)地方的當(dāng)?shù)貢r(shí)間過去被當(dāng)成世界標(biāo)準(zhǔn)的時(shí)間。

UT:Universal Time 世界時(shí)。根據(jù)原子鐘計(jì)算出來的時(shí)間。

UTC:Coordinated Universal Time 協(xié)調(diào)世界時(shí)。因?yàn)榈厍蜃赞D(zhuǎn)越來越慢,每年都會(huì)比前一年多出零點(diǎn)幾秒,每隔幾年協(xié)調(diào)世界時(shí)組織都會(huì)給世界時(shí)+1秒(會(huì)出現(xiàn)閏秒即61s,一般不處理),讓基于原子鐘的世界時(shí)和基于天文學(xué)(人類感知)的格林尼治標(biāo)準(zhǔn)時(shí)間相差不至于太大。并將得到的時(shí)間稱為UTC,這是現(xiàn)在使用的世界標(biāo)準(zhǔn)時(shí)間。

GMT和UTC維度不一樣,但值是一樣的,UTC = GTM+0(時(shí)區(qū))

我們都知道時(shí)間都可以用GMT或者UTC來表示,而時(shí)間戳由于是基于格林尼治的特定時(shí)間,在地球上過1秒,在全球任何一個(gè)地方都是1秒,因此同一時(shí)刻,全球的值是一樣的。

可以看看java示例,發(fā)現(xiàn)不同時(shí)區(qū)時(shí)間戳確實(shí)是相等的

 
 
 
 
  1. // 獲得不同時(shí)區(qū)的時(shí)間,來計(jì)算時(shí)間戳 
  2. LocalDateTime localDateTime = LocalDateTime.now(); 
  3. OffsetDateTime offsetDateTime7 = OffsetDateTime.of(localDateTime.minusHours(1), ZoneOffset.ofHours(7)); 
  4. OffsetDateTime offsetDateTime8 = OffsetDateTime.of(localDateTime, ZoneOffset.ofHours(8)); 
  5. System.out.println(offsetDateTime7.toEpochSecond() == offsetDateTime8.toEpochSecond()); // true 

 因此,業(yè)界對(duì)于時(shí)區(qū)的處理基本都是基于時(shí)間戳。

[[358244]]

前后端配合以保證用戶看到的都是本地時(shí)間

針對(duì)此類問題,對(duì)于后端需要注意的是服務(wù)器是否會(huì)部署到不同時(shí)區(qū),建議獲取系統(tǒng)時(shí)間的操作,改成獲取統(tǒng)一一個(gè)時(shí)區(qū)的時(shí)間,再將其轉(zhuǎn)成時(shí)間戳進(jìn)行存儲(chǔ);而前端最主要的則是在請(qǐng)求中傳入時(shí)區(qū)到后端,一般可以在請(qǐng)求頭中添加獲取到的系統(tǒng)的時(shí)區(qū),將時(shí)區(qū)傳入到后端。后端根據(jù)時(shí)區(qū),如+8,則將數(shù)據(jù)庫中的時(shí)間戳,轉(zhuǎn)成對(duì)應(yīng)時(shí)區(qū)的時(shí)間。如下圖

最后,推薦使用java8時(shí)間類去處理,java8中核心的類就幾種:

ZoneId、ZoneOffset主要表示時(shí)區(qū)和偏移

Instant 表示時(shí)間戳,Duration、Period 表示時(shí)間差,前者表示時(shí)間差,后者表示日期差

LocalDate、LocalTime、LocalDateTime表示日期、時(shí)間、日期+時(shí)間

ZonedDateTime、OffsetDateTime含時(shí)區(qū)信息的時(shí)間


當(dāng)前題目:聽干貨君聊項(xiàng)目多時(shí)區(qū)處理
文章來源:http://www.5511xx.com/article/cdgghpc.html