0

次の形式で JSON から解析された日付オブジェクトがあります。

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

しかし、私は時間の部分だけに興味があります(月、年、日などではありません)。私の質問は次のとおりです。タイムゾーン情報を失うことなく、日付部分 (月、年、日) を正しく置き換えるにはどうすればよいですか?

私が最終的にやりたいことは次のとおりです。

(1) 2 つの日付を解析する (日付情報なし)。開始時間と終了時間

(2) 'dw' が (1) の start と end で定義された時間の間にある場合は、別の日付 'dw' (日付情報を含む) を確認します。

例えば:

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 、および date に異なるタイムゾーンが設定されていると、問題が発生することはありませんか?

4

2 に答える 2

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);
于 2013-10-16T11:44:18.680 に答える
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はこれを試すことができます

于 2013-10-16T13:21:42.497 に答える