Android DatePicker Fragment 返回一个月前的日期
Posted
技术标签:
【中文标题】Android DatePicker Fragment 返回一个月前的日期【英文标题】:Android DatePicker Fragment returns date one month prior 【发布时间】:2016-01-09 11:16:06 【问题描述】:好吧,这很奇怪。我有一个非常简单的DatePicker
对话框。问题是,无论我选择哪个日期,返回的值都恰好是所选日期前一个月。这是我的代码:
活动
btnEventDate.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
DialogFragment newFragment = new DatePickerFragment();
newFragment.show(getSupportFragmentManager(), "datePicker");
);
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth)
DateTime dt = new DateTime(year, monthOfYear, dayOfMonth, 0, 0, 0, 0);
Log.d(Constants.TAG, "dt: " + dt.toString());
Log.d(Constants.TAG, "str: " + dateHandler.convertDateToYYYY_MM_DDString(dt));
DatePickerFragment
public class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener
@Override
public Dialog onCreateDialog(Bundle savedInstanceState)
// Use the current date as the default date in the picker
final Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DAY_OF_MONTH);
return new DatePickerDialog(getActivity(), (OnDateSetListener)getActivity(), year, month, day);
public void onDateSet(DatePicker view, int year, int month, int day)
当对话框出现时,它清楚地设置为今天的日期。假设我选择 2015 年 10 月 12 日,日志输出显示如下:
dt: 2015-09-12T00:00:00.000-06:00 str: 2015-09-12
我一定错过了什么。有谁知道我做错了什么?
【问题讨论】:
试试这个 DateTime dt = new DateTime(year, monthOfYear+1, dayOfMonth, 0, 0, 0, 0) 嗯,这当然可以解决问题,但这样做是正确的吗?如果月份是从零开始的,为什么年和日也不呢? 【参考方案1】:月份从0
变为12
。从January
到Undecimber
。
尝试将它们与Calendar."MONTH"
进行比较。
示例:Calendar.OCTOBER == 9
链接:http://developer.android.com/reference/java/util/Calendar.html#MONTH。
注意:如果使用GregorianCalendar
,则可以忽略第十三个月。
【讨论】:
你是对的。月份是从零开始的,但其他参数不是,这似乎很奇怪。生活和学习,我猜。谢谢!【参考方案2】:请访问此链接,我认为月份是从 0 到 11,如果我错了请忽略。
Get date from datepicker using dialogfragment
【讨论】:
以上是关于Android DatePicker Fragment 返回一个月前的日期的主要内容,如果未能解决你的问题,请参考以下文章