Java 使用连字符打印连续日期
我有一个日期列表,以ddMMMyyyy的形式存储在一个字符串中。日期可能是连续的,也可能不是连续的 我将这些日期打印为单独的日期。如果日期是连续的,我想删除它并使用连字符 例如Java 使用连字符打印连续日期,java,android,xml,date,time,Java,Android,Xml,Date,Time,我有一个日期列表,以ddMMMyyyy的形式存储在一个字符串中。日期可能是连续的,也可能不是连续的 我将这些日期打印为单独的日期。如果日期是连续的,我想删除它并使用连字符 例如 13Aug2020 15Aug2020 - 18Aug2020 22Aug2020 而不是 13Aug2020 15Aug2020 16Aug2020 17Aug2020 18Aug2020 22Aug2020 用于打印日期的代码: mDateView.setText(mDateValue.replace("
13Aug2020
15Aug2020 - 18Aug2020
22Aug2020
而不是
13Aug2020
15Aug2020
16Aug2020
17Aug2020
18Aug2020
22Aug2020
用于打印日期的代码:
mDateView.setText(mDateValue.replace(",", "\n"));
其中,mDateView是一个文本视图,mDateValue是一个字符串,包含所有日期,用逗号分隔使用
DateTimeFormatter
将每个字符串解析为一个LocalDate
对象。搜索方式(如果您的搜索导致页面使用旧且麻烦的SimpleDataFormat
,请避免)。为当前间隔的开始和结束创建两个变量。将第一个日期存储到两个字段中。在剩余日期的循环中:
- 如果当前日期是结束后一天,则将其存储到结束中,从而将间隔延长一天
- 否则,打印当前间隔,请参见下文了解如何打印。然后再次将当前日期存储到开始和结束中
DateTimeFormatter
将每个打印日期格式化为所需格式,例如原始格式
要确定当前日期是否在结束后一天,请使用plusDays
和LocalDate
的isEqual
方法
快乐编码
问:LocalDate不需要Android API级别26吗?
LocalDate
是现代java日期和时间API java.time的一部分。time在较旧和较新的Android设备上都能很好地工作。它至少需要Java6
- 在Java8和更高版本以及更新的Android设备上(API级别26),现代API是内置的
- 在非androidjava6和7中,获取三个后端口,即现代类的后端口(三个十用于jsr310;请参见底部的链接)
- 在较旧的Android上,可以使用desugaring或Android版本的ThreeTen Backport。它叫ThreeTenABP。在后一种情况下,请确保使用子包从
导入日期和时间类org.threeten.bp
- 解释如何使用java.time
- ,其中首先描述了
java.time
- ,java.time的后端口到Java6和Java7(JSR-310为三十)
- ,Android版Three Ten Backport
- ,解释得非常透彻
DateTimeFormatter
将每个字符串解析为LocalDate
对象。搜索方式(如果您的搜索导致页面使用旧且麻烦的SimpleDataFormat
,请避免)。为当前间隔的开始和结束创建两个变量。将第一个日期存储到两个字段中。在剩余日期的循环中:
- 如果当前日期是结束后一天,则将其存储到结束中,从而将间隔延长一天
- 否则,打印当前间隔,请参见下文了解如何打印。然后再次将当前日期存储到开始和结束中
DateTimeFormatter
将每个打印日期格式化为所需格式,例如原始格式
要确定当前日期是否在结束后一天,请使用plusDays
和LocalDate
的isEqual
方法
快乐编码
问:LocalDate不需要Android API级别26吗?
LocalDate
是现代java日期和时间API java.time的一部分。time在较旧和较新的Android设备上都能很好地工作。它至少需要Java6
- 在Java8和更高版本以及更新的Android设备上(API级别26),现代API是内置的
- 在非androidjava6和7中,获取三个后端口,即现代类的后端口(三个十用于jsr310;请参见底部的链接)
- 在较旧的Android上,可以使用desugaring或Android版本的ThreeTen Backport。它叫ThreeTenABP。在后一种情况下,请确保使用子包从
导入日期和时间类org.threeten.bp
- 解释如何使用java.time
- ,其中首先描述了
java.time
- ,java.time的后端口到Java6和Java7(JSR-310为三十)
- ,Android版Three Ten Backport
- ,解释得非常透彻
2020-08-15/2020-08-18
XML究竟是从哪里来的?尝试将日期字符串转换为日期对象,然后使用循环查找序列的最后日期。参见:看起来像一个简单的编程任务,你到底在哪里挣扎?顺便说一句,时间间隔文本上是用斜杠字符分隔日期,而不是空格和连字符<代码>2020-08-15/2020-08-18