2013-10-16 75 views
0

我在follwing格式從JSON解析的日期對象:如何更換日期部分設置爲當前日期在現有日期對象

String date = getJsonDateFromServer(); 
Date result = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ").parse(date); 

但我只在部分時間有興趣(月,年,日等)。 所以我的問題是:如何正確替換日期部分(月,年,日)而不丟失時區信息?

我最後想要做的是以下幾點:

(1)解析兩個日期(不包括日期信息)。啓動和endTime

(2)檢查另一個日期「DW」(與日期信息),如果「DW」是在開始和結束定義爲從(1)

例如時間之間:

Date start = parse(18:00 +02:00); 
Date end = parse(20:00 +02:00); 
Date  dw=new Date(); 
boolean inBetween = dw>= start && dw <= end; 

如何做到這一點?

/UPDATE: 我實現它用於測試目的是這樣的:

public boolean isActiveOn(Date date) { 

    Calendar toCheck = Calendar.getInstance(); 
    toCheck.setTime(date); 

    Calendar cal_start = Calendar.getInstance(); 
    cal_start.setTime(this.time_begin); 
    cal_start.set(toCheck.get(Calendar.YEAR), toCheck.get(Calendar.MONTH), 
      toCheck.get(Calendar.DAY_OF_MONTH)); 

    Calendar cal_end = Calendar.getInstance(); 
    cal_end.setTime(this.time_end); 
    cal_end.set(toCheck.get(Calendar.YEAR), toCheck.get(Calendar.MONTH), 
      toCheck.get(Calendar.DAY_OF_MONTH)); 

    boolean after_start = toCheck.after(cal_start); 
    boolean before_end = toCheck.before(cal_end); 
    return after_start && before_end; 
} 

但是,這不是造成問題時,不同的時區在this.time_begin,this.time_end和日期設置?

+0

如果你可能使用約達時間,這將讓你的生活變得簡單許多...... –

+0

我Joda似乎在手機上運行良好?!你會怎麼做呢? – Adreamus

回答

1

所有你需要做的是:

String date = getJsonDateFromServer(); 
Date result = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ").parse(date); 

SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ssZ") 
Date timeOnly = dateFormat.parse(dateFormat.format(result)); 

現在你有一個只有時間和時區的日期。

這裏是比較代碼:

Date start = dateFormat.format(result); 
Date end = dateFormat.format(resultNr2); 
Date dw = dateFormat.format(resultNr3); 
boolean inBetween = dw.after(start) && dw.before(end); 
+0

問題在這裏:DateFormat.format(日期)將返回一個字符串,並沒有日期。但是,謝謝...唯一可以工作的是解析它'dateFormat.parse(dateFormat.format(date));' – Adreamus

+0

你是絕對正確的。但這是你的問題吧? –

+0

是的,謝謝,這工作。但雙解析...誰在乎;-) – Adreamus

0
private DatePickerDialog createDialogWithoutDateField(){ 
      Calendar c = Calendar.getInstance(); 
      int year = c.get(Calendar.YEAR); 
      int month = c.get(Calendar.MONTH); 
      int day = c.get(Calendar.DAY_OF_MONTH); 

(AdditionalRepaymentDetailClass.this, datePickerListener_edtToDate,mYear,mMonth, mDay); 
      DatePickerDialog edtToDate= new DatePickerDialog(DirectDebitClass.this, datePickerListener_edtToDate, year, month,day); 
     try{ 
      Field[] datePickerDialogFields = edtToDate.getClass().getDeclaredFields(); 
      for (Field datePickerDialogField : datePickerDialogFields) { 
       if (datePickerDialogField.getName().equals("mDatePicker")|| datePickerDialogField.getName().equals("mDaySpinner")) { 
        datePickerDialogField.setAccessible(true); 
        DatePicker datePicker = (DatePicker) datePickerDialogField.get(edtToDate); 
        Field datePickerFields[] = datePickerDialogField.getType().getDeclaredFields(); 
        for (Field datePickerField : datePickerFields) { 
         if ("mDayPicker".equals(datePickerField.getName())|| "mDaySpinner".equals(datePickerField.getName())) { 
          datePickerField.setAccessible(true); 
          Object dayPicker = new Object(); 
          dayPicker = datePickerField.get(datePicker); 
          ((View) dayPicker).setVisibility(View.GONE); 

         } 
        } 
       } 

       } 
      }catch(Exception ex){ 
      } 

      return edtToDate; 

     } 

U可以試試這個

+0

謝謝,但我通過Json從服務器加載日期。所以它不是DatePicker問題... – Adreamus

相關問題