代码小结:时区的时间问题
生活随笔
收集整理的這篇文章主要介紹了
代码小结:时区的时间问题
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
import java.util.TimeZone;public class TimeZoneAndDate
{/*** 如果虛擬機(jī)中得到的時(shí)間與機(jī)器的時(shí)間不同,那么基本上就是因?yàn)闀r(shí)區(qū)設(shè)置的原因。* 當(dāng)前默認(rèn)的時(shí)區(qū)不為當(dāng)?shù)氐臅r(shí)區(qū)就會(huì)出現(xiàn)時(shí)間偏差,這時(shí)我們可以更改默認(rèn)時(shí)區(qū),更改之后獲得的時(shí)間就都為你所設(shè)置的時(shí)區(qū)的時(shí)間了。* 注意:更改默認(rèn)時(shí)區(qū)后的改變是全局的,也就是說只要當(dāng)前服務(wù)沒有關(guān)閉(比如:在web項(xiàng)目中服務(wù)器沒關(guān)閉),以后獲得的時(shí)間都會(huì)是之前設(shè)置的默認(rèn)時(shí)區(qū)下的時(shí)間。*/public static void fun1(){System.out.println("當(dāng)前默認(rèn)的時(shí)區(qū):"+TimeZone.getDefault());System.out.println("默認(rèn)時(shí)區(qū)下的當(dāng)前時(shí)間:"+new Date());// 更改當(dāng)前時(shí)區(qū)為東八區(qū)GMT+8,即北京時(shí)間。TimeZone.setDefault(TimeZone.getTimeZone("GMT+8"));System.out.println("更改后的時(shí)區(qū):"+TimeZone.getDefault());System.out.println("更改時(shí)區(qū)后的當(dāng)前時(shí)間:"+new Date());/** 以下為2012-12-22日的測試結(jié)果 */
// 當(dāng)前默認(rèn)的時(shí)區(qū):sun.util.calendar.ZoneInfo[id="GMT",offset=0,dstSavings=0,useDaylight=false,transitions=0,lastRule=null]
// 默認(rèn)時(shí)區(qū)下的當(dāng)前時(shí)間:Sat Dec 22 07:16:17 GMT 2012
// 更改后的時(shí)區(qū):sun.util.calendar.ZoneInfo[id="GMT+08:00",offset=28800000,dstSavings=0,useDaylight=false,transitions=0,lastRule=null]
// 更改時(shí)區(qū)后的當(dāng)前時(shí)間:Sat Dec 22 15:16:17 GMT+08:00 2012
}/*** 如果我們虛擬機(jī)的時(shí)區(qū)是正確的,但客戶端可能不都在一個(gè)時(shí)區(qū)(比如一些跨國項(xiàng)目),我們中國也是橫跨5個(gè)時(shí)區(qū)的,* 這種情況下我們就需要將當(dāng)前時(shí)區(qū)下的時(shí)間轉(zhuǎn)化成其他時(shí)區(qū)下的時(shí)間,這時(shí)我們不能使用全局的時(shí)區(qū)設(shè)置,而只能局部轉(zhuǎn)化。*/public static void fun2(){Date date = new Date();SimpleDateFormat sdf8 = new SimpleDateFormat();sdf8.setTimeZone(TimeZone.getTimeZone("GMT+8"));//東八區(qū),北京時(shí)間SimpleDateFormat sdf9 = new SimpleDateFormat();sdf9.setTimeZone(TimeZone.getTimeZone("GMT+9"));//東九區(qū),日本時(shí)間
System.out.println(TimeZone.getDefault().getID()+"默認(rèn)時(shí)區(qū):"+date);System.out.println(sdf8.getTimeZone().getID()+"時(shí)區(qū):"+sdf8.format(date));System.out.println(sdf9.getTimeZone().getID()+"時(shí)區(qū):"+sdf9.format(date));/** 以下為2012-12-22的測試結(jié)果 。* 前后顯示時(shí)間的格式不同,SimpleDateFormat使用的是系統(tǒng)默認(rèn)的格式。* 我們也可以進(jìn)行更改,如:new SimpleDateFormat("yyyy-MM-dd HH-mm-ss")* 補(bǔ)充:SimpleDateFormat還可以設(shè)置Locale。Locale主要還是與語言、文字有關(guān),用于設(shè)置國際化 */
// GMT默認(rèn)時(shí)區(qū):Sat Dec 22 07:37:53 GMT 2012
// GMT+08:00時(shí)區(qū):12-12-22 下午3:37
// GMT+09:00時(shí)區(qū):12-12-22 下午4:37
}public static void main(String[] args){// TODO Auto-generated method stub
// fun1();
fun2();}}
?
總結(jié)
以上是生活随笔為你收集整理的代码小结:时区的时间问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 游戏党神器!一加27W冰点散热背夹开售
- 下一篇: 人工大脑项目 —— Nengo