2017-01-10 56 views
0

在我的应用程序的一部分中,用户需要选择和开始和结束事件的时间,所以我显示两个连续的选择器,以便用户可以选择开始/结束的日期/时间,但问题是总是会在最终结果中添加一天。DateTime选取器对话框将添加一天到我选择的日期

这里是我的代码:

private Date FechaInicio, FechaFin; 
private Calendar myCalendar = Calendar.getInstance(); 
private Calendar myCalendarEnd = Calendar.getInstance(); 
private long epochTimeStart, epochTimeEnd; 



@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_nuevo_xxxxx_step3); 

    //First Date picjer that have the listener dateStart 
    new DatePickerDialog(xxxxx.this, dateStart, myCalendar 
      .get(Calendar.YEAR), myCalendar.get(Calendar.MONTH), 
      myCalendar.get(Calendar.DATE)).show(); 

} 


//Start date listener 
DatePickerDialog.OnDateSetListener dateStart = new DatePickerDialog.OnDateSetListener(){ 

    public void onDateSet(DatePicker view, int year, int monthOfYear, 
          int dayOfMonth) { 
     // TODO Auto-generated method stub 
     myCalendar.set(Calendar.YEAR, year); 
     myCalendar.set(Calendar.MONTH, monthOfYear); 
     myCalendar.set(Calendar.DATE, dayOfMonth); 

     //Start de time picker for startdate 
     new TimePickerDialog(xxxxx.this,timeStart,myCalendar.get(Calendar.HOUR),myCalendar.get(Calendar.MINUTE),false).show(); 

    } 
}; 


//Time picker dialog for starTime 
TimePickerDialog.OnTimeSetListener timeStart = new TimePickerDialog.OnTimeSetListener(){ 

    @Override 
    public void onTimeSet(TimePicker view, int hourOfDay, int minute) { 
     myCalendar.set(Calendar.HOUR, hourOfDay); 
     myCalendar.set(Calendar.MINUTE,minute); 


     epochTimeStart = myCalendar.getTimeInMillis(); 

     //Start de DatePicker for End Date with 
     new DatePickerDialog(xxxxxx.this, dateEnd, myCalendarEnd 
       .get(Calendar.YEAR), myCalendarEnd.get(Calendar.MONTH), 
       myCalendarEnd.get(Calendar.DATE)).show(); 

    } 
}; 

//Listener for end date 
DatePickerDialog.OnDateSetListener dateEnd = new DatePickerDialog.OnDateSetListener(){ 

    public void onDateSet(DatePicker view, int year, int monthOfYear, 
          int dayOfMonth) { 
     // TODO Auto-generated method stub 

     //Save the date in other calendar instance 
     myCalendarEnd.set(Calendar.YEAR, year); 
     myCalendarEnd.set(Calendar.MONTH, monthOfYear); 
     myCalendarEnd.set(Calendar.DATE, dayOfMonth); 


     //Time picker for end date 
     new TimePickerDialog(xxx.this,timeEnd,myCalendarEnd.get(Calendar.HOUR),myCalendarEnd.get(Calendar.MINUTE),false).show(); 

    } 

}; 


//Listener for time of End Date 
TimePickerDialog.OnTimeSetListener timeEnd = new TimePickerDialog.OnTimeSetListener(){ 

    @Override 
    public void onTimeSet(TimePicker view, int hourOfDay, int minute) { 
     myCalendarEnd.set(Calendar.HOUR, hourOfDay); 
     myCalendarEnd.set(Calendar.MINUTE,minute); 
     epochTimeEnd = myCalendarEnd.getTimeInMillis(); 
} 

} 

我对时间变量epochTimeStartepochTimeEnd,但是当我将它们转换为日期是一直在增加一天(我尝试转换日期上的Web www.epochconverter .com和我有相同的结果)。

+0

数据“当我将其转换为日期”里? –

+0

在其他活动的另一种方法(我没有发布所有的代码),但转换不是问题,因为我打印纪元时间,并使用在线转换器(如www.epochconverter.com),结果是相同的,问题在于计算时代 – user3515652

+0

其中是“计算时代”?你对计算有什么期望?最后要显示的数据是什么? –

回答

0

我去槽你的代码,它工作正常。在这里我用它来检查你选择的日期和时间。 https://currentmillis.com/

enter image description here

看到有两个时间和日期UTC之一,当地one.You需要使用当地的一个,因为挥霍不贴你转换的方式,如果你有时间和日期的差异尝试转换它以正确的格式。

里面你第一次选择器

epochTimeStart = myCalendar.getTimeInMillis(); 

      Calendar cl = Calendar.getInstance(); 
      cl.setTimeInMillis(epochTimeStart); 
      cl.add(Calendar.MONTH,1); 
      String date = "" + cl.get(Calendar.DAY_OF_MONTH) + ":" + cl.get(Calendar.MONTH) + ":" + cl.get(Calendar.YEAR); 
      String time = "" + cl.get(Calendar.HOUR_OF_DAY) + ":" + cl.get(Calendar.MINUTE) + ":" + cl.get(Calendar.SECOND); 

      Log.d("TimeCheck *****",date + " "+ time); 

,它会回报你这样4:5:2017 16:49:38

相关问题