2013-03-05 38 views
4

我用這個方法來獲取本地時間:獲取在Java(日曆)當地時間

Calendar cal = Calendar.getInstance(); 

String time= new SimpleDateFormat("dd MMM yyyy HH:mm:ss").format(cal.getTime()); 

我的問題是,下午這個方法讓我回去例如,「11:15」,但它是「23 :15「已經。 我希望我的desc不會令人困惑。

我想回復下午的值,例如:12:MM,13:MM,14:MM ..等到23:MM。 。 。

我應該改變什麼?

+0

一些相關的閱讀材料:http://infiniteundo.com/post/25326999628/falsehoods-programmers-believe-about-time – 2013-03-05 08:02:52

+1

看來你正在使用0-23之間的小時值正確的標誌。有關詳細信息,請參閱此處:https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.htm 是否有可能您的問題在代碼中較低的地方?如何使用'時間'? – Barett 2015-08-10 19:48:32

回答

4
  1. 你確定PC上的時間或者你正在使用的程序是正確的?

  2. 嘗試使用公曆:

    new GregorianCalendar().getTime() 
    
  3. 請確保您有這些進口:

    import java.util.Date; 
    import java.util.GregorianCalendar; 
    

希望有所幫助。

1

我想你會得到混合了時區。獲取與您的系統的默認語言環境的日曆:

Calendar cal = Calendar.getInstance(Locale.getDefault()); 
+0

我嘗試這個,但我必須等下午。 我會接受你的答案,如果它確定 – 2013-03-05 08:01:22

+0

@AdamVarhegyi你可以簡單地改變時間,現在檢查它:) – Maroun 2013-03-05 08:07:44

2

你可以嘗試這樣的事情:

Date date=new Date();  
System.out.println(new SimpleDateFormat("yyyy.MM.dd HH:mm").format(date)); 

輸出例如:

2013年3月5日22:07

+0

嗯。這似乎與OP已經做的一樣。 – Barett 2015-08-10 19:49:07

+0

@Barett不是真的..再看看。 – Maroun 2015-08-11 08:13:50

+1

如果您避免說日期的構造是問題(第二次),那麼在您的答案中提及這一點會很有幫助。不知道爲什麼所有的蒙面語言;這不是蘇格拉底溢出。由於他認爲格式化是問題,所以OP很困惑。除了標點符號外,您的格式也完全一樣。 – Barett 2015-08-11 16:08:27

0

您正在使用HH標誌。嘗試使用kk標誌。

例如,kk:mm而不是HH:mm

+0

這並沒有提供一個問題的答案。要批評或要求作者澄清,在他們的帖子下留下評論 - 你總是可以評論你自己的帖子,一旦你有足夠的[聲譽](http://stackoverflow.com/help/whats-reputation),你會能夠[評論任何帖子](http://stackoverflow.com/help/privileges/comment)。 – 2015-08-10 17:52:32

+0

@shekharsuman我不同意。雖然這是不正確的,但這是一個完全有效的簡短答案。 – Barett 2015-08-10 19:43:18

+0

邁克,'HH'應該返回0-23的值,這是OP想要的。 'kk'返回值1-24。按照https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.htm – Barett 2015-08-10 19:46:56