2017-09-28 26 views
0

您好我是否想知道是否有任何Java代碼可以計算基於給定時間添加特定小時數的估計完成時間。Android Studio - 通過在設定時間內添加小時來計算完成時間

例如...

「dateButton =(按鈕)findViewById(R.id.angry_btn); dateButton.setOnClickListener(新View.OnClickListener(){

 @Override 
     public void onClick(View v) { 

      LocalDateTime currentTime = LocalDateTime.now(ZoneId.of("UTC")); 
      Instant instant = currentTime.toInstant(ZoneOffset.UTC); 
      Date currentDate = Date.from(instant); 
      dateButton.setText("Current Date = " + currentDate); 


      LocalDateTime nextTime = currentTime.plusHours(12); 
      Instant instant2 = nextTime.toInstant(ZoneOffset.UTC); 
      Date expiryDate = Date.from(instant2); 
      TextView endtime = (TextView)findViewById(R.id.endtimetextView); 
      endtime.setText((CharSequence) expiryDate); 
     } 
    });' 

用戶點擊一個稱爲啓動按鈕捕捉當前的日期和時間,其上已在文本框例如被輸入由所述用戶的持續時間增加了12小時,那麼結束時間計算並顯示在下面一個TextView。

這不是工作,也沒有讓我作爲目標SDK太高我的設備上運行。

任何幫助將是巨大的。

謝謝!

+0

你現在試過了什麼? – Naxos84

+0

您使用的是哪個版本的Java? Java 8及更高版本對操作日期和時間有更好的支持。看一看! https://docs.oracle.com/javase/8/docs/api/java/time/package-summary.html#package.description – khriskooper

+0

我認爲它重複爲:https://stackoverflow.com/questions/31003605/ java8-adding-hours-to-localdatetime-not-working –

回答

0

不要將舊的遺留日期時間類(如java.util.Date)與java.time類混合使用。 java.time類完全取代了舊類。

當試圖表示時區上的實際時刻時,請勿使用LocalDateTime。類別沒有偏移UTC或時區的概念。

Instant類表示UTC時間軸中的一個時刻,分辨率爲納秒。

Instant instant = Instant.now() ; 

加12小時。

Instant later = instant.plusHours(12) ; 

查看通過某個特定區域的時區的鏡頭的那一刻。

ZoneId z = ZoneId.of("Pacific/Auckland") ; 
ZonedDateTime zdt = later.atZone(z) ; 

要使用標準ISO 8601格式生成表示此值的字符串,請撥打toString。對於其他格式,請搜索Stack Overflow for DateTimeFormatter,因爲這已經被覆蓋了很多次。

舊的Android缺少java.time類。請參閱ThreeTen-Backport和ThreeTenABP項目。