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。从JanuaryUndecimber

尝试将它们与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 返回一个月前的日期的主要内容,如果未能解决你的问题,请参考以下文章

Android:如何设置 DatePicker 的样式?

如何从 Android 中的 DatePicker 小部件中获取日期?

Android如何在片段中显示DatePicker?

android 获取Datepicker日期

Android 高版本日历恢复转轮(DatePicker)

android 日期控件 datePicker 如何去掉右边的日历表