Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么我的android日期选择器显示年份错误?_Java_Android_Date_Datepicker - Fatal编程技术网

Java 为什么我的android日期选择器显示年份错误?

Java 为什么我的android日期选择器显示年份错误?,java,android,date,datepicker,Java,Android,Date,Datepicker,我已经为我的应用程序创建了这个日期选择器,并将其设置为在用户选择日期后显示祝酒词。这只是一个测试,在我继续做其他事情之前,然而,当我选择一个日期时,它会显示错误的年份。例如,当我选择今天的日期时,祝酒词将显示:“日期是:3917-04-10” 感谢您的帮助 编辑:我修好了。我所要做的就是改变这一行: start = new Date(yyyy,mm,dd); 关于这一行: start = calendar.getTime(); 不要使用新日期(yyyy、mm、dd)使用 Calenda

我已经为我的应用程序创建了这个日期选择器,并将其设置为在用户选择日期后显示祝酒词。这只是一个测试,在我继续做其他事情之前,然而,当我选择一个日期时,它会显示错误的年份。例如,当我选择今天的日期时,祝酒词将显示:“日期是:3917-04-10”

感谢您的帮助

编辑:我修好了。我所要做的就是改变这一行:

start = new Date(yyyy,mm,dd);
关于这一行:

start = calendar.getTime();   
不要使用新日期(yyyy、mm、dd)使用

Calendar c = Calendar.getInstance();
    c.set(Calendar.YEAR, yyyy);
    c.set(Calendar.MONTH, mm);
    c.set(Calendar.DAY_OF_MONTH, dd);
    c.getTime();

不推荐使用
Date
构造函数。你可以看到

This constructor was deprecated in API level 1. As of JDK version 1.1, replaced by Calendar.set(year + 1900, month, date) or GregorianCalendar(year + 1900, month, date)
最好像在创建对话框之前使用getter一样使用
日历
对象的setter

calendar.set(Calendar.YEAR, yyyy);
calendar.set(Calendar.MONTH, mm);
calendar.set(Calendar.DAY_OF_MONTH, dd);
是的,您可以使用
新日期(yyyy-1900,mm,dd)
。但是它很糟糕。

新日期()已被弃用,您可以(更好)使用
日历

您的代码如下所示:

Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR,yyyy);
cal.set(Calendar.DAY_OF_MONTH,dd);
cal.set(Calendar.MONTH,mm);

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
entered_Start  = sdf.format(cal.getTime());
Toast.makeText(getActivity(), "Date is: "+ entered_Start, Toast.LENGTH_LONG).show();

您是否设置了日期格式?默认情况下,datepicker dateformat是
默认值:“mm/dd/yy”
您使用的已弃用的
Date
构造函数将1900添加到年份中。因此,如果你通过2017年,你会在3917年得到一个日期。如果你应该使用它(不推荐),你需要在2017年通过117。
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR,yyyy);
cal.set(Calendar.DAY_OF_MONTH,dd);
cal.set(Calendar.MONTH,mm);

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
entered_Start  = sdf.format(cal.getTime());
Toast.makeText(getActivity(), "Date is: "+ entered_Start, Toast.LENGTH_LONG).show();