gpt4 book ai didi

Java Date 从长时间返回不正确的日期

转载 作者:行者123 更新时间:2023-11-29 06:55:33 24 4
gpt4 key购买 nike

我正在编写一个 Android 应用程序,它使用 DatePicker。日期以年、年月、月日的形式返回。

从那里我可以格式化日期:

            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
try {
Date d = format.parse(year + "-" + (monthOfYear + 1) + "-" + dayOfMonth);
String dString = d.toString().substring(0, 10) + " " + year;
if(startEnd) {
startDateText.setText(dString);
startDate = new Date(year, monthOfYear, dayOfMonth);
Log.d("Start date set- ", startDate.toString());
} else {
endDateText.setText(dString);
endDate = new Date(year, monthOfYear, dayOfMonth);
Log.d("End date set- ", endDate.toString());
}

} catch (ParseException e) {
Log.d("Exception- ", e.getMessage());
}

if(startEnd) 部分仅引用两个不同的 TextView ,因为正在收集一系列日期。

此时数据出错。返回的值是正确的。例如,当我选择星期六,1 月 2 日时,我得到的值为 2016 1 2,年月日。

dString 的值也是正确的,它最终为 Sat Jan 02 2016。

但是,当我调用 startDate.toString() 时,返回的值为 Sun Jan 02 00:00:00 GMT+00:00 3916,这是休息日。

每次约会都会这样,我不知道为什么。

startDate 和 endDate 的长值通过 setResult() 传回,因为它们将在别处使用。从这些长值产生的日期都产生相同的一天关闭日期。

在此先感谢您的帮助

最佳答案

如果您查看 Date javadoc 你会看到你正在调用的构造函数需要 year-1900。因此,对于 2016 年,您将提供 116 作为年份:

new Date( 116, 0, 2 );

此外,月份需要指定0索引。所以一月是 0 而不是 1

我还应该注意到它是一个已弃用的构造函数。您应该更喜欢 Calendar.set(year + 1900, month, date)GregorianCalendar(year + 1900, month, date)

关于Java Date 从长时间返回不正确的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34980082/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com