基本概念
時(shí)區(qū) :time zone 1884年國際經(jīng)線會議規(guī)定豁陆,全球按經(jīng)度分為24個(gè)時(shí)區(qū)帅刀,每區(qū)各占經(jīng)度15°菲饼。
以本初子午線為中央經(jīng)線的時(shí)區(qū)為零時(shí)區(qū)肾砂,由零時(shí)區(qū)向東、西各分12區(qū)宏悦,東镐确、西12區(qū)都是半時(shí)區(qū),共同使用180°經(jīng)線的地方時(shí)饼煞。
CST :China Standard Time UTC+8:00 中國標(biāo)準(zhǔn)時(shí)間(北京時(shí)間)源葫,在東八區(qū)
UTC :Universal Time Coordinated,世界協(xié)調(diào)時(shí)間,又稱世界標(biāo)準(zhǔn)時(shí)間砖瞧、世界統(tǒng)一時(shí)間息堂。UTC 提供了一種與時(shí)區(qū)無關(guān)(或非特定于時(shí)區(qū))的時(shí)間。
世界上的所有時(shí)區(qū)都可以表示為 UTC 加上或減去一個(gè)偏移量块促。
因此储矩,UTC是0時(shí)區(qū)的時(shí)間,如北京為早上八點(diǎn)(東八區(qū))褂乍,UTC時(shí)間就為零點(diǎn),時(shí)間比北京時(shí)晚八小時(shí)
GMT :Greenwich Mean Time格林威治標(biāo)準(zhǔn)時(shí)間即硼,指位于英國倫敦郊區(qū)的皇家格林尼治天文臺的標(biāo)準(zhǔn)時(shí)間逃片,因?yàn)楸境踝游缇€被定義在通過那里的經(jīng)線。
Unix timestamp :Unix時(shí)間戳只酥,或稱Unix時(shí)間(Unix time)褥实、POSIX時(shí)間(POSIX time),是一種時(shí)間表示方式裂允,
定義為從格林威治時(shí)間(UTC/GMT的午夜)1970年01月01日00時(shí)00分00秒起至現(xiàn)在的總秒數(shù)损离。
可以這么說:
UTC和GMT幾乎是同一概念,兩者的區(qū)別是GMT是一個(gè)天文上的概念绝编,UTC是基于原子鐘僻澎。
GMT=UTC
GMT + 8 = UTC + 8 = CST
UTC+時(shí)間差=本地時(shí)間 (時(shí)間差東為正,西為負(fù)十饥,東八區(qū)記為 +0800)
總結(jié)
System.currentTimeMillis():可以提取到當(dāng)前時(shí)間的毫秒數(shù)窟勃,產(chǎn)生一個(gè)當(dāng)前的毫秒,這個(gè)毫秒其實(shí)就是自1970年1月1日0時(shí)起的毫秒數(shù)逗堵。等同于new Date().getTime() ?
java.util.Date代表一個(gè)時(shí)間點(diǎn)秉氧,其值為距公元1970年1月1日 00:00:00的毫秒數(shù)。所以它是沒有時(shí)區(qū)和Locale概念的蜒秤。java通過如下形式取得當(dāng)前時(shí)間點(diǎn):Date now = new Date();? //這個(gè)時(shí)間點(diǎn)與本地系統(tǒng)的時(shí)區(qū)無關(guān)
而正因?yàn)槠渑c時(shí)區(qū)的無關(guān)性汁咏,才使得我們的存儲數(shù)據(jù)(時(shí)間)是一致的(時(shí)區(qū)一致性)亚斋。
一般的我們將now存儲于數(shù)據(jù)庫中,當(dāng)我們需要展現(xiàn)數(shù)據(jù)時(shí)攘滩,將now格式化成想要的格式帅刊,如:2015-04-13 21:22:24
而這個(gè)功能一般交由java.text.DateFormat來實(shí)現(xiàn)。例如:
1SimpleDateFormat sdf =newSimpleDateFormat("yyyy-MM-dd HH:mm:ss");
2String snow = sdf.format(now);
如果想支持國際化時(shí)間轰驳,則先指定時(shí)區(qū)厚掷,然后再格式化date數(shù)據(jù)。例如:
SimpleDateFormat sdf =newSimpleDateFormat("yyyy-MM-dd HH:mm:ss");
2sdf.setTimeZone(TimeZone.getTimeZone("GMT+8"));
3String snow = sdf.format(now);// snow = 2015-04-04 21:22:24
4sdf.setTimeZone(TimeZone.getTimeZone("GMT+7"));
5String snow2 = sdf.format(now);// snow2 = 2015-04-04 20:22:24 (可見:東八區(qū)比東七區(qū)早一個(gè)小時(shí))
另外级解,你可以通過如下代碼修改本地時(shí)區(qū)信息:
TimeZone.setDefault(TimeZone.getTimeZone("GMT+8"));