◢▇▇▄ ▇▄▁ ▇▄▁ ▇▇▄▁ ▇▄▁ ▇▄▁ ▇▄▁▇▄ ▇▇▇▄◢▇▇▇▄
▇▄▁ ▇▇▄▇▇▄▁▇▄▇▄▁▇▄▁ ▇▄▁ ▇▄▁▇▄ ▇▄▁ ▇▄▁▇▄
▇▇▇▄ ▇ ▇▇ ▇▄▁▇▄▇▄▁▇▄▁ ▇▄▁ ▇▄▁▇▄ ▇▇▄▁▇▄▁▇▄
▇▄ ▇▄▇▄▇▄ ▇▄ ▇▄ ▇▄▁ ▇▄▁ ▇▄▁▇▄ ▇▄▁ ▇▄▁▇▄
◥▇▇▄ ▇▄▁ ▇▄ ▇▄ ▇▄ ◥▇▇▄◥▇▇▄◥▇▇▇▄ ▇▄▁ ◥▇▇▇▄
--
※ Origin: 清華電機 ◆ From: 140.116.247.36
> -------------------------------------------------------------------------- <
發信人: [email protected] (Class 類別的物件), 看板: Linux
標 題: Re: 在 Linux 下,如何用 Java 抓出現在的時間?
發信站: 台北科大電子DORAMI (Wed Dec 22 11:22:34 1999)
轉信站: Ptt!bbs.ee.ntu!freebsd.ntu!netnews.csie.nctu!ctu-gate!news.nctu!ccnews
【 在 [email protected] (Les Miserables) 的大作中提到: 】
: 以上這個程式在執行時 , 卻怎麼都抓不到系統正確的時間
: ex: 現在是 1999/12/22 早上約 10:29
: 執行結果:1999?12?21? ??08?29?34?
: 先別管那些問號,那些是編碼問題。很明顯地,它抓到 1999/12/21 下午 8:29
: 這是怎麼回事,怎麼會晚了十四小時?
: 而在 Linux 上面打 'date' , 結果如下:
: 1999 十二月 22 星期三 10:30:57 CST
: 系統明明是正確的時間,為什麼 java 抓到慢十四小時?
: ps:我已經在Linux 的時區部分設成 Asia/Taipei 囉
: 而把這個 class 檔案 copy 到 Win98 下面(沒有 re-compile),卻又可以正常運作
: C:\temp>java testdate
: 1999年12月22日 上午10時32分29秒
: 這是怎麼回事?要怎樣才能讓 java 抓到系統現在的時間?
1. 你跑的 Distribution 鐵定是 RedHat Linux, 因為 C library 裡面
取得 time 的 library 在 redhat 裡面就是有時差..
2. 要解決你的問題, 把 hour 取得後, + 2 就是正確的時間了... 沒辦法..
所以我會 取得 os.name 判斷是 Linux -> +2
--
※ 來源:‧北科大電子 DORAMI bbs.en.ntut.edu.tw‧[FROM: 140.124.71.13]
> -------------------------------------------------------------------------- <
發信人: [email protected] (Les Miserables), 看板: Linux
標 題: Re: 在 Linux 下,如何用 Java 抓出現在的時間?
發信站: ☆清華電機☆ (Wed Dec 22 11:29:18 1999)
轉信站: Ptt!bbs.ee.ntu!freebsd.ntu!netnews.csie.nctu!news.ee.nthu!star
==> 在 [email protected] (Class 類別的物件) 的文章中提到:
> 【 在 [email protected] (Les Miserables) 的大作中提到: 】
> : 這是怎麼回事?要怎樣才能讓 java 抓到系統現在的時間?
> 1. 你跑的 Distribution 鐵定是 RedHat Linux, 因為 C library 裡面
Bingo!
> 取得 time 的 library 在 redhat 裡面就是有時差..
唉~~~
> 2. 要解決你的問題, 把 hour 取得後, + 2 就是正確的時間了... 沒辦法..
> 所以我會 取得 os.name 判斷是 Linux -> +2
不是應該加 14 嗎?
不只遲了 2 小時,是遲了 14 小時耶
--
◢▇▇▄ ▇▄▁ ▇▄▁ ▇▇▄▁ ▇▄▁ ▇▄▁ ▇▄▁▇▄ ▇▇▇▄◢▇▇▇▄
▇▄▁ ▇▇▄▇▇▄▁▇▄▇▄▁▇▄▁ ▇▄▁ ▇▄▁▇▄ ▇▄▁ ▇▄▁▇▄
▇▇▇▄ ▇ ▇▇ ▇▄▁▇▄▇▄▁▇▄▁ ▇▄▁ ▇▄▁▇▄ ▇▇▄▁▇▄▁▇▄
▇▄ ▇▄▇▄▇▄ ▇▄ ▇▄ ▇▄▁ ▇▄▁ ▇▄▁▇▄ ▇▄▁ ▇▄▁▇▄
◥▇▇▄ ▇▄▁ ▇▄ ▇▄ ▇▄ ◥▇▇▄◥▇▇▄◥▇▇▇▄ ▇▄▁ ◥▇▇▇▄
--
※ Origin: 清華電機 ◆ From: 140.116.247.36
> -------------------------------------------------------------------------- <
發信人: [email protected] (Class 類別的物件), 看板: Linux
標 題: Re: 在 Linux 下,如何用 Java 抓出現在的時間?
發信站: 台北科大電子DORAMI (Wed Dec 22 14:35:18 1999)
轉信站: Ptt!bbs.ee.ntu!freebsd.ntu!aidebbs!dorami
【 在 [email protected] (Les Miserables) 的大作中提到: 】
: ==> 在 [email protected] (Class 類別的物件) 的文章中提到:
: > 1. 你跑的 Distribution 鐵定是 RedHat Linux, 因為 C library 裡面
: Bingo!
: > 取得 time 的 library 在 redhat 裡面就是有時差..
: 唉~~~
: > 2. 要解決你的問題, 把 hour 取得後, + 2 就是正確的時間了... 沒辦法..
: > 所以我會 取得 os.name 判斷是 Linux -> +2
: 不是應該加 14 嗎?
: 不只遲了 2 小時,是遲了 14 小時耶
+14 ? 小心你會看到 24, 25, ... 時的喔:p
因為我有把 time show 在 applet 上, 所以我那時後也覺得很奇怪,
第一個反應也是 + 14, 後來我改了一下 System time, 就發現出現了
24, 25, 26... 時... 改成 +2, 就只會限制在 0 ~ 23...
--
※ 來源:‧北科大電子 DORAMI bbs.en.ntut.edu.tw‧[FROM: sun.cc.ntut.edu.tw]
> -------------------------------------------------------------------------- <
發信人: [email protected] (Les Miserables), 看板: Linux
標 題: Re: 在 Linux 下,如何用 Java 抓出現在的時間?
發信站: ☆清華電機☆ (Wed Dec 22 23:47:33 1999)
轉信站: Ptt!bbs.ee.ntu!freebsd.ntu!netnews.csie.nctu!news.ee.nthu!star
那要怎麼利用 Calender 取得「正確」的系統時間?
Locale locale = new Locale("","");
DateFormat fmt = DateFormat.getDateTimeInstance
(DateFormat.LONG,DateFormat.LONG,locale);
fmt.setTimeZone(TimeZone.getTimeZone("CTT"));
System.out.println("DateFormat : "+fmt.format(new java.util.Date()));
Calendar cal = Calendar.getInstance
(TimeZone.getTimeZone("CTT"),locale.TAIWAN);
cal.setTimeZone(TimeZone.getTimeZone("CTT"));
java.util.Date rightNow = cal.getTime();
System.out.println("Date : "+rightNow.toString());
以上兩段程式碼,在 Windows98 下面,都可以正確取出現在的時間
但是在 Linux 中,只有 前半段可以顯示正確時間,後半段仍然慢了十四小時!?
$ java testdate
DateFormat : December 22, 1999 11:55:19 PM GMT+08:00
Date : Wed Dec 22 09:55:19 CST 1999
這到底該怎麼辦?
--
◢▇▇▄ ▇▄▁ ▇▄▁ ▇▇▄▁ ▇▄▁ ▇▄▁ ▇▄▁▇▄ ▇▇▇▄◢▇▇▇▄
▇▄▁ ▇▇▄▇▇▄▁▇▄▇▄▁▇▄▁ ▇▄▁ ▇▄▁▇▄ ▇▄▁ ▇▄▁▇▄
▇▇▇▄ ▇ ▇▇ ▇▄▁▇▄▇▄▁▇▄▁ ▇▄▁ ▇▄▁▇▄ ▇▇▄▁▇▄▁▇▄
▇▄ ▇▄▇▄▇▄ ▇▄ ▇▄ ▇▄▁ ▇▄▁ ▇▄▁▇▄ ▇▄▁ ▇▄▁▇▄
◥▇▇▄ ▇▄▁ ▇▄ ▇▄ ▇▄ ◥▇▇▄◥▇▇▄◥▇▇▇▄ ▇▄▁ ◥▇▇▇▄
--
※ Origin: 清華電機 ◆ From: 140.116.247.36
> -------------------------------------------------------------------------- <
發信人: [email protected] (Class 類別的物件), 看板: Linux
標 題: Re: 在 Linux 下,如何用 Java 抓出現在的時間?
發信站: 台北科大電子DORAMI (Thu Dec 23 00:15:55 1999)
轉信站: Ptt!bbs.ee.ntu!freebsd.ntu!aidebbs!dorami
【 在 [email protected] (Les Miserables) 的大作中提到: 】
: 那要怎麼利用 Calender 取得「正確」的系統時間?
: Locale locale = new Locale("","");
: DateFormat fmt = DateFormat.getDateTimeInstance
: (DateFormat.LONG,DateFormat.LONG,locale);
: fmt.setTimeZone(TimeZone.getTimeZone("CTT"));
: System.out.println("DateFormat : "+fmt.format(new java.util.Date()));
: Calendar cal = Calendar.getInstance
: (TimeZone.getTimeZone("CTT"),locale.TAIWAN);
: cal.setTimeZone(TimeZone.getTimeZone("CTT"));
: java.util.Date rightNow = cal.getTime();
: System.out.println("Date : "+rightNow.toString());
: 以上兩段程式碼,在 Windows98 下面,都可以正確取出現在的時間
: 但是在 Linux 中,只有 前半段可以顯示正確時間,後半段仍然慢了十四小時!?
: $ java testdate
: DateFormat : December 22, 1999 11:55:19 PM GMT+08:00
: Date : Wed Dec 22 09:55:19 CST 1999
: 這到底該怎麼辦?
唉, 我已經跟你提過, RedHat Linux 下的硬是有時差..
所以, 你這部份沒有辦法 platform-independent
Calendar cal = new GregorianCalendar();
String os = System.getProperty("os.name");
if( os.equals("Linux" ) )
System.out.println("Hour: " + (cal.get(Calendar.HOUR)+2) );
else
System.out.println("Hour: " + cal.get(Calendar.HOUR) );
非這樣做不可, 除非你寫信 跟 Sun 說, Java 在 Linux 上不要以
C library implement... 不然鐵會有時差...
再不然就是改用 Slackware... Slackware 我知道不會有這個問題..
--
※ 來源:‧北科大電子 DORAMI bbs.en.ntut.edu.tw‧[FROM: ppp1004.cc.ntut.edu.]
> -------------------------------------------------------------------------- <
發信人: [email protected] (Les Miserables), 看板: Linux
標 題: Re: 在 Linux 下,如何用 Java 抓出現在的時間?
發信站: ☆清華電機☆ (Thu Dec 23 01:18:25 1999)
轉信站: Ptt!bbs.ee.ntu!news.ntu!ctu-gate!news.nctu!newsfeed.nthu!news.ee.nthu!
==> 在 [email protected] (Class 類別的物件) 的文章中提到:
> 【 在 [email protected] (Les Miserables) 的大作中提到: 】
> : 那要怎麼利用 Calender 取得「正確」的系統時間?
> 唉, 我已經跟你提過, RedHat Linux 下的硬是有時差..
> 所以, 你這部份沒有辦法 platform-independent
> Calendar cal = new GregorianCalendar();
> String os = System.getProperty("os.name");
> if( os.equals("Linux" ) )
> System.out.println("Hour: " + (cal.get(Calendar.HOUR)+2) );
> else
> System.out.println("Hour: " + cal.get(Calendar.HOUR) );
> 非這樣做不可, 除非你寫信 跟 Sun 說, Java 在 Linux 上不要以
> C library implement... 不然鐵會有時差...
> 再不然就是改用 Slackware... Slackware 我知道不會有這個問題..
可是我這段程式可以正確顯示時間呀!
Locale locale = new Locale("","");
DateFormat fmt = DateFormat.getDateTimeInstance
(DateFormat.LONG,DateFormat.LONG,locale);
fmt.setTimeZone(TimeZone.getTimeZone("CTT"));
System.out.println("DateFormat : "+fmt.format(new java.util.Date()));
這段程式碼有設時區 CTT , 沒有加時間(兩小時),可以正常顯示
可是把同樣的方法套用到 Calender 就還是 delay 了十四小時...
Calendar cal = Calendar.getInstance
(TimeZone.getTimeZone("CTT"),locale.TAIWAN);
cal.setTimeZone(TimeZone.getTimeZone("CTT"));
java.util.Date rightNow = cal.getTime();
System.out.println("Date : "+rightNow.toString());
--
◢▇▇▄ ▇▄▁ ▇▄▁ ▇▇▄▁ ▇▄▁ ▇▄▁ ▇▄▁▇▄ ▇▇▇▄◢▇▇▇▄
▇▄▁ ▇▇▄▇▇▄▁▇▄▇▄▁▇▄▁ ▇▄▁ ▇▄▁▇▄ ▇▄▁ ▇▄▁▇▄
▇▇▇▄ ▇ ▇▇ ▇▄▁▇▄▇▄▁▇▄▁ ▇▄▁ ▇▄▁▇▄ ▇▇▄▁▇▄▁▇▄
▇▄ ▇▄▇▄▇▄ ▇▄ ▇▄ ▇▄▁ ▇▄▁ ▇▄▁▇▄ ▇▄▁ ▇▄▁▇▄
◥▇▇▄ ▇▄▁ ▇▄ ▇▄ ▇▄ ◥▇▇▄◥▇▇▄◥▇▇▇▄ ▇▄▁ ◥▇▇▇▄
--
※ Origin: 清華電機 ◆ From: 140.116.247.36
請問在 Linux 下面如何利用 JAVA 抓出現在的時間?
請看下面的簡單 code :
import java.util.*;
import java.text.*;
public class testdate
{
static public void main(String[] args)
{
Locale locale = new Locale("zh","TW");
DateFormat fmt = DateFormat.getDateTimeInstance
(DateFormat.LONG,DateFormat.LONG,locale);
fmt.setTimeZone(TimeZone.getDefault());
System.out.println(fmt.format(new Date()));
}
}
以上這個程式在執行時 , 卻怎麼都抓不到系統正確的時間
ex: 現在是 1999/12/22 早上約 10:29
執行結果:1999?12?21? ??08?29?34?
先別管那些問號,那些是編碼問題。很明顯地,它抓到 1999/12/21 下午 8:29
這是怎麼回事,怎麼會晚了十四小時?
而在 Linux 上面打 'date' , 結果如下:
1999 十二月 22 星期三 10:30:57 CST
系統明明是正確的時間,為什麼 java 抓到慢十四小時?
ps:我已經在Linux 的時區部分設成 Asia/Taipei 囉
而把這個 class 檔案 copy 到 Win98 下面(沒有 re-compile),卻又可以正常運作
C:\temp>java testdate
1999年12月22日 上午10時32分29秒
這是怎麼回事?要怎樣才能讓 java 抓到系統現在的時間?
--