我需要我的Java Android应用程序来提取和比较日期,但是要获得正确的日期一团糟。
TimeZone timeZone = TimeZone.getTimeZone("GMT");
Calendar calendar = Calendar.getInstance(timeZone);
Date currentTime = calendar.getTime();
Log.i(logtag, "Date currentTime="+currentTime);
String tidspunkt = calendar.get(Calendar.YEAR)+ "." + calendar.get(Calendar.MONTH)+"."+calendar.get(Calendar.DAY_OF_MONTH)+" "+calendar.get(Calendar.HOUR_OF_DAY)+":"+calendar.get(Calendar.MINUTE)+":"+calendar.get(Calendar.SECOND);
Log.i(logtag, "calendar.get(Calendar.YEAR)="+tidspunkt);
String tidspunkt2 = currentTime.getYear()+ "." + currentTime.getMonth()+"."+currentTime.getDay()+" "+currentTime.getHours()+":"+currentTime.getMinutes()+":"+currentTime.getSeconds();
Log.i(logtag, "currentTime.getYear()="+tidspunkt2);
currentTime.setYear(calendar.get(Calendar.YEAR));
currentTime.setMonth((calendar.get(Calendar.MONTH)));
currentTime.setDate(calendar.get(Calendar.DAY_OF_MONTH));
currentTime.setHours(calendar.get(Calendar.HOUR_OF_DAY));
currentTime.setMinutes(calendar.get(Calendar.MINUTE));
currentTime.setSeconds(calendar.get(Calendar.SECOND));
Log.i(logtag, "Date currentTime edited="+currentTime);
String tidspunkt3 = currentTime.getYear()+ "." + currentTime.getMonth()+"."+currentTime.getDay()+" "+currentTime.getHours()+":"+currentTime.getMinutes()+":"+currentTime.getSeconds();
Log.i(logtag, "currentTime.getYear() edited="+tidspunkt3);
实际运行时间:2022年1月10日周一22:29
结果:
我需要将旧日期保存为对象,然后能够从这些对象中提取正确的年份、月数、天数等。所以我需要一个对象,我可以从中提取日期,并设置为我需要的任何旧日期。
从不使用时区、日历、日期。不要浪费你的时间去理解他们奇怪的行为。Sun、Oracle和JCP社区多年前就放弃了这些课程,您也应该这么做。多年前,这些糟糕的类被现代java所取代。JSR 310中定义的时间类。
捕获UTC中显示的当前时刻(偏移量为零)。
Instant instant = Instant.now() ;
Instant
类是具有有限功能的基本构建块类。为了获得更大的灵活性,请转换为OffsetDateTime
或ZonedDateTime
。
OffsetDateTime odt = instant.atOffset( ZoneOffset.UTC ) ;
ZonedDateTime zdt = instant.atZone( ZoneId.of( "Asia/Tokyo" ) ) ;
请注意,这里的所有三个对象,< code>instant、< code>odt,
要生成代表某个时刻的文本,您工作得太辛苦了。让DateTimeFormatter完成繁重的工作。
Locale locale = Locale.CANADA_FRENCH ;
DateTimeFormatter f = DateTimeFormatter.ofLocalizedDateTime( FormatStyle.LONG ).withLocale( locale ) ;
String output = zdt.format( f ) ;
Android 26内置了java.time的实现。对于早期的Android,最新的工具通过“API去糖化”提供了大部分java.time功能。如果这对您不起作用,请使用java.time的后台端口ThreeTenABP项目。
这就是为什么“日期”
和“日历”
是可怕的 API,你应该用 java.time 替换它们
。您是否已阅读日期设置上的文档?
或者看到日历.1月
是0?
您可以使用java.time
与Android的脱糖。
问题内容: 当我运行此代码时: 我在Eclipse的JUnit运行程序中得到以下结果: 这导致从命令行Maven: 如您所见,时间有所不同。 (同一台计算机,相同的Java版本,可能相隔30秒)。为什么? [编辑] 时区也不同。从Maven 启动和从Eclipse 启动时,为什么要使用Java ? 或换一种说法:如何强制Java使用两者? 问题答案: 要指定默认时区,您可以设置系统属性。您可以通过
问题内容: 我有一个字符串形式的日期。我必须将其更改为Sql Date。所以为此,我使用了以下代码。 当我使用上面的代码并运行它。我得到以下输出。 此处月份未正确转换。 请告诉我问题出在哪里,并提供示例代码以获得正确的结果? 问题答案: 是 分钟 。你想为 月 : 不要感到难过-这个确切的错误经常出现。
我有两个字符串格式的日期:说,格式为。比较日期1和日期2的相等性的最佳方法是什么?我不关心时间,只关心日、年、月。我应该将它们转换为即时并进行比较吗?
问题内容: 我有一个简单的方法,应该获取当前日期,将其放入某种格式,然后将其作为String返回。到目前为止,一切都很好(上次尝试于1月31日进行),但由于某种原因,当我今天尝试使用它时,它返回字符串“2013-02-43”。 显然,二月份没有43天,而且我不知道为什么要返回此日期。我到处都在寻找解决方案,但似乎没有一个适合我遇到的特定问题。这是代码: 仅出于记录目的,我尝试使用Calendar.
而输出是 谁能详细说明一下1380605909318和61341428160000之间的区别?
问题内容: 我创建了一些小的方法作为Util类,例如以下代码: 并且,进行了非常简单的运行,如下所示: 结果是一个很奇怪的日期-> 2017/07/187 搜索了类似的问题,并尝试了TimeZone,Locale,但没有帮助。有什么建议 ? 顺便说一句,这是我的环境: Windows7 x86 JDK 1.8.0.131 x86 Oxygen corrosion of x86 问题答案: 您格式化