⑴ 在java中怎麼獲取北京時間
一般情況可以用直接用Date類,例如:
Date date = new Date(System.currentTimeMillis()); System.out.println(date);先用System.currentTimeMillis()是得到系統當前時間。然後輸出就可以了。
但是如果要更加准確的話,最好用Calendar類,因為可能用你的程序的系統不是中國的,用Date date = new Date(System.currentTimeMillis())得到的就是不是北京時間了。所以可以用Calendar calendar = Calendar.getInstance(Locale.CHINA);
還可以用SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");來格式化時間。下面是一個簡單的實例:
publicclassGetTime
{
publicstaticvoidmain(String[]args)
{
Calendarcalendar=Calendar.getInstance(Locale.CHINA);
Datedate=calendar.getTime();
SimpleDateFormatdateFormat=newSimpleDateFormat("yyyy-MM-ddHH:mm:ss");
StringdateString=dateFormat.format(date);
System.out.println(dateString);
}
}
導入包的時候Date類是java.util下的Date類,java.util.Date;
⑵ 怎麼實時同步java虛擬機與操作系統時區 及JVM啟動後再更改操作系統時區或時間也能保持其同步
在一個精簡的linux安裝上jre,發現所有的java程序獲取的時間都不是系統時間。後來發現原來是時區不對。
java程序獲取的時間都是GMT時間,而系統是北京時間,應該是GMT+8,剛好相差8小時。網上搜了好多資料,只有兩種方法:1、在程序中使用
java的函數設定時區。2、在啟動java程序時加參數-Duser.timezone=GMT+8
⑶ java獲取網路當前時間
如果你要獲取的是Internet時間,可以使用NTP服務。
NTP概念簡介
Network Time Protocol(NTP)是用來使計算機時間同步化的一種協議,它可以使計算機對其伺服器或時鍾源(如石英鍾,GPS等等)做同步化,它可以提供高精準度的時間校正(LAN上與標准間差小於1毫秒,WAN上幾十毫秒),且可介由加密確認的方式來防止惡毒的協議攻擊。
java實現:
importjava.io.InputStream;
importjava.net.Socket;
publicclassTimeUtil{
publicstaticfinalintDEFAULT_PORT=37;//NTP伺服器埠
_HOST="time-nw.nist.gov";//NTP伺服器地址
privateTimeUtil(){
};
(Booleansync){
if(sync!=null&&sync.booleanValue()!=true)
returnSystem.currentTimeMillis();
try{
returnsyncCurrentTime();
}catch(Exceptione){
returnSystem.currentTimeMillis();
}
}
()throwsException{
//,
//thejavaDateclassat1970.Thisnumber
//convertsbetweenthem.
longdifferenceBetweenEpochs=2208988800L;
//Ifyou'
//.
/*
*TimeZonegmt=TimeZone.getTimeZone("GMT");Calendarepoch1900=
*Calendar.getInstance(gmt);epoch1900.set(1900,01,01,00,00,00);
*longepoch1900ms=epoch1900.getTime().getTime();Calendarepoch1970
*=Calendar.getInstance(gmt);epoch1970.set(1970,01,01,00,00,00);
*longepoch1970ms=epoch1970.getTime().getTime();
*
*longdifferenceInMS=epoch1970ms-epoch1900ms;long
*differenceBetweenEpochs=differenceInMS/1000;
*/
InputStreamraw=null;
try{
SockettheSocket=newSocket(DEFAULT_HOST,DEFAULT_PORT);
raw=theSocket.getInputStream();
longsecondsSince1900=0;
for(inti=0;i<4;i++){
secondsSince1900=(secondsSince1900<<8)|raw.read();
}
if(raw!=null)
raw.close();
longsecondsSince1970=secondsSince1900-differenceBetweenEpochs;
longmsSince1970=secondsSince1970*1000;
returnmsSince1970;
}catch(Exceptione){
thrownewException(e);
}
}
}
中國大概能用的NTP時間伺服器
server 133.100.11.8 prefer
server 210.72.145.44
server 203.117.180.36 //程序中所用的
server 131.107.1.10
server time.asia.apple.com
server 64.236.96.53
server 130.149.17.21
server 66.92.68.246
server www.freebsd.org
server 18.145.0.30
server clock.via.net
server 137.92.140.80
server 133.100.9.2
server 128.118.46.3
server ntp.nasa.gov
server 129.7.1.66
server ntp-sop.inria.frserver 210.72.145.44(國家授時中心伺服器IP地址)
ntpdate 131.107.1.10
ntpdate -s time.asia.apple.com
⑷ java怎麼獲取gmt當前的系統時間
Date now = new Date(); 當前時間就是now,你試著列印一下就出來了,如果對日期時間格式有要求,就SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//設置日期格式,不就OK了
⑸ java中如何獲取時區
//我實現一個時鍾窗口程序給你了,好讓你更容易理解,希望對你有幫助。
import java.awt.*;
import java.awt.event.*;
import java.util.*;
//世界時鍾
public class TimerTest {
public static void main(String[] args) {
new TimerTestFrame("世界時鍾");
}
}
class TimerTestFrame extends Frame {
/**
*
*/
private static final long serialVersionUID = 1L;
public TimerTestFrame(String s) {
super(s);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e) {
dispose();
System.exit(0);
}
});
setLayout(new GridLayout(2, 6));
ClockCanvas clk1 = new ClockCanvas("北京", "GMT+8"); // 創建時鍾
ClockCanvas clk2 = new ClockCanvas("巴黎", "GMT+2");
ClockCanvas clk3 = new ClockCanvas("華盛頓", "GMT-4");
ClockCanvas clk4 = new ClockCanvas("洛衫磯", "GMT-7");
ClockCanvas clk5 = new ClockCanvas("倫敦", "GMT+1");
ClockCanvas clk6 = new ClockCanvas("芝加哥", "GMT-5");
add(clk1);
add(clk2);
add(clk3);
add(clk4);
add(clk5);
add(clk6);
setSize(500, 350); // 設置框架寬高
setVisible(true);
}
}
class ClockCanvas extends Canvas implements Runnable {
/**
*
*/
private static final long serialVersionUID = 1L;
private int seconds = 0;
private String city;
private GregorianCalendar calendar;
Thread t;
public ClockCanvas(String c, String tz) {
city = c;
//也可以通過TimeZone.setTimeZone(String n)函數改變時區,n為時區參數名。
calendar = new GregorianCalendar(TimeZone.getTimeZone(tz));
t = new Thread(this);
t.start();
setSize(125, 125); // 設置畫布大小
setBackground(Color.black);
}
// 重寫父類的方法繪制時鍾圖形
public void paint(Graphics g) {
Graphics2Dg2d = (Graphics2D) g;
BasicStroke bstroke = new BasicStroke(2.0f);
g2d.setStroke(bstroke);
g2d.setColor(Color.green);
g2d.drawOval(0, 0, 100, 100);
bstroke = new BasicStroke(5.0f);
g2d.setStroke(bstroke);
g2d.drawLine(50, 0, 50, 5);
g2d.drawLine(0, 50, 5, 50);
g2d.drawLine(50, 95, 50, 98);
g2d.drawLine(95, 50, 98, 50);
double hourAngle = 2 * Math.PI * (seconds - 3 * 60 * 60)
/ (12 * 60 * 60);
double minuteAngle = 2 * Math.PI * (seconds - 15 * 60) / (60 * 60);
double secondAngle = 2 * Math.PI * (seconds - 15) / (60);
bstroke = new BasicStroke(5.0f);
g2d.setStroke(bstroke);
g2d.drawLine(50, 50, 50 + (int) (30 * Math.cos(hourAngle)),
50 + (int) (30 * Math.sin(hourAngle)));
bstroke = new BasicStroke(3.0f);
g2d.setStroke(bstroke);
g2d.drawLine(50, 50, 50 + (int) (40 * Math.cos(minuteAngle)),
50 + (int) (40 * Math.sin(minuteAngle)));
bstroke = new BasicStroke(1.0f);
g2d.setStroke(bstroke);
g2d.drawLine(50, 50, 50 + (int) (45 * Math.cos(secondAngle)),
50 + (int) (45 * Math.sin(secondAngle)));
g2d.setColor(Color.red);
g2d.drawString(city, 35, 115);
}
public void timeElapsed() {
//new Date()()獲得當前時間
System.out.println(new Date()());
calendar.setTime(new Date()());
seconds = calendar.get(Calendar.HOUR) * 60 * 60
+ calendar.get(Calendar.MINUTE) * 60
+ calendar.get(Calendar.SECOND);
}
public void run() {
try {
while (true) {
Thread.sleep(300);
timeElapsed();
repaint();
}
} catch (InterruptedException e) {
}
}
}
⑹ java中怎麼將日期轉換為GMT格式
其實不管建不建議,能用就行,不非得用推薦的。
String toGMT(Date date) {
try {
SimpleDateFormat format = new SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss");
Calendar cal = Calendar.getInstance(new SimpleTimeZone(0, "GMT"));
format.setCalendar(cal);
return format.format(date);
} catch (ParseException e) {
e.printStackTrace();
}
}
⑺ java代碼怎樣獲取internet標准時間
獲取internet標准時間,參考以下代碼:
TimeZone.setDefault(TimeZone.getTimeZone("GMT+8"));//時區設置
URLurl=newURL("
);//取得資源對象
URLConnectionuc=url.openConnection();//生成連接對象
uc.connect();//發出連接
longld=uc.getDate();//取得網站日期時間(時間戳)
Datedate=newDate(ld);//轉換為標准時間對象
//分別取得時間中的小時,分鍾和秒,並輸出
System.out.print(date.getHours()+"時"+date.getMinutes()+"分"+date.getSeconds()+"秒");
⑻ linux系統下java程序獲取的時間與系統時間不一致
造成這種問題的原因是:你的操作系統時區跟你JVM的時區不一致。
你的操作系統應該是中國的時區,而JVM的時區不一定是中國時區,你在應用伺服器的Java虛擬機添加如下配置: -Dfile.encoding=UTF8 -Duser.timezone=GMT+08
在一個精簡的Linux安裝上jre,所有的java程序獲取的時間都不是系統時間。java程序獲取的時間都是GMT時間,而系統是北京時間,是GMT+8,剛好相差8小時。只有兩種方法可以解決 :
1、在程序中使用java的函數設定時區。
2、在啟動java程序時加參數-Duser.timezone=GMT+8
jre是從/etc/sysconfig/clock這個文件中 獲取時區信息的。
附clock文件內容:
ZONE="Asia/Shanghai"
UTC=false
ARC=false
ZONE -- 時區
UTC -- 表明時鍾設置為UTC。
ARC -- 僅用於alpha表明使用ARC。
⑼ 如何用java程序獲取取internet標准時間
獲取internet標准時間,參考以下代碼:
TimeZone.setDefault(TimeZone.getTimeZone("GMT+8")); // 時區設置
URL url=new URL("
);//取得資源對象
URLConnection uc=url.openConnection();//生成連接對象
uc.connect(); //發出連接
long ld=uc.getDate(); //取得網站日期時間(時間戳)
Date date=new Date(ld); //轉換為標准時間對象
//分別取得時間中的小時,分鍾和秒,並輸出
System.out.print(date.getHours()+"時"+date.getMinutes()+"分"+date.getSeconds()+"秒");
⑽ 編寫一個java程序,讀取系統時間,然後將時間用中文輸出
java程序讀取系統時間,可以使用Date時間類,使用格式化類simpleDateFormat類,實例如下:
packagecom.qiu.lin.he;
importjava.text.SimpleDateFormat;
importjava.util.Date;
publicclassCeShi{
publicstaticvoidmain(String[]args){
Datedate=newDate();//獲取此時的系統時間
SimpleDateFormatsdf=newSimpleDateFormat("yyyy年MM月dd日HH點mm分ss秒");
System.out.println("中文現實的時間是"+sdf.format(date));
}
}
運行結果如下: