2014-09-04 29 views
0
9/4/2014 3:55:10 AM 

這裏是我當前的日期和時間,我想添加10小時讓我凸輪比賽與設備的當前時間,請告訴我,怎樣才能實現如何在Java中加入10小時當前日期和時間

public static void main(String[] args) { 

     SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss"); 
     String currentDateandTime =" 9/4/2014 3:55:10 AM "; 
     Date date = formatter.parse(currentDateandTime); 
     Calendar calendar = Calendar.getInstance(); 
     calendar.setTime(date); 
     calendar.add(Calendar.HOUR, 10); 

     System.out.println("Time here "+calendar.getTime());  



    } 

此代碼正在嘗試,但我不能穿上Impalement,請幫助我在哪裏做錯誤。

+0

formatter = DateFormat.getInstance();我認爲你錯過了這條線 – 2014-09-04 11:31:25

+0

使用compareto()方法來比較 – DJhon 2014-09-04 11:35:24

+0

這不是一個正確的答案,但如果你定期處理日期,庫Joda-Time是必須的。 – 2014-09-04 11:56:16

回答

1

你的代碼幾乎可以正常工作,但是你犯了一個錯字。您嘗試調用尚未聲明的formatter上的parse()。相反,你必須調用parse()sdf

public static void main(final String[] args) throws Exception { 
    final SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss"); 
    final String currentDateandTime = " 9/4/2014 3:55:10 AM "; 
    final Date date = sdf.parse(currentDateandTime); 
    final Calendar calendar = Calendar.getInstance(); 

    calendar.setTime(date); 
    calendar.add(Calendar.HOUR, 10); 

    System.out.println("Time here " + calendar.getTime()); 
} 

由於使用的是12小時制,你可以修改它是這樣的:

public static void main(final String[] args) throws Exception { 
    final SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy hh:mm:ss aa"); 
    final String currentDateandTime = "9/4/2014 3:55:10 AM"; 
    final Date date = sdf.parse(currentDateandTime); 
    final Calendar calendar = Calendar.getInstance(); 

    calendar.setTime(date); 
    calendar.add(Calendar.HOUR, 10); 

    System.out.println("Time here " + sdf.format(calendar.getTime())); 
} 
+0

BUt我不會改變爲PM爲什麼? – Edge 2014-09-04 11:40:21

+0

我得到以下輸出:'這裏的時間Thu Sep 04 13:55:10 CEST 2014'。我認爲這是PM。 – stevecross 2014-09-04 11:44:52

+0

here here顯示時間這裏星期五9月05 00:55:10 IST 2014 – Edge 2014-09-04 11:46:49

0

您沒有創建DateFormat。如果你想找出你的計算機時鐘的當前時間,你可以做以下

import java.text.DateFormat; 
import java.text.ParseException; 
import java.util.Calendar; 
import java.util.Date; 

public class Main { 

    public static void main(String[] args) throws ParseException { 

     String currentDateandTime = " 9/4/2014 3:55:10 AM "; 
     DateFormat formatter = DateFormat.getInstance(); 
     Date date = formatter.parse(currentDateandTime); 
     Calendar calendar = Calendar.getInstance(); 
     calendar.setTime(date); 
     calendar.add(Calendar.HOUR, 10); 

     System.out.println("Time here " + calendar.getTime()); 

    } 

} 

enter image description here

+0

類型不匹配:無法從java.util.Date轉換爲java.sql.Date錯誤即將發生d – Edge 2014-09-04 11:30:23

+0

查看導入,更改導入。清理java.sql.Date並編寫java.util.Date – 2014-09-04 11:31:37

+0

java.text.ParseException:Unparseable date:「9/4/2014 3:55:10 AM」 \t at java.text.DateFormat.parse(Unknown Source) \t at Test.main(Test.java:16) 異常即將到來您可以發送完整的代碼包括進口 – Edge 2014-09-04 11:37:47

0

首先:試試這個

long now = System.currentTimeMillis(); 

將返回一個長表示時間戳。如果你想把它當作一個Date對象,你可以這樣做:

Date now = new Date(); 

至於你的代碼的其餘部分的邏輯看起來是正確的這裏是我的代碼,增加了10小時,現在一個片段。

Date now = new Date(); 
Calendar cal = new GregorianCalendar(); 
calendar.setTime(date); 
calendar.add(Calendar.HOUR, 10); 
Date plus10 = calendar.getTime(); 
System.out.println(plus10); 
+0

其實這次來自服務器9/4/2014 3:55:10 AM我想與PC時間匹配如果我將添加10小時 – Edge 2014-09-04 11:32:39

0

如果你在1970年以後的日期操作,增加10小時給定的日期可以在一行代碼來實現:

Date d1 = new Date(); // or sdf.parse() 
Date d2 = new Date(d1.getTime() + 10 * 60 * 60 * 1000); // add 10h in millis 

輸出是:

Thu Sep 04 13:56:39 CEST 2014 
Thu Sep 04 23:56:39 CEST 2014 
相關問題