我有一个以ddMMMyyyy格式存储的日期列表,存储在一个字符串中。日期可以连续也可以不连续 我将这些日期打印为单独的日期。如果日期是连续的,我想删除并使用连字符。
例如
13Aug2020
15Aug2020 - 18Aug2020
22Aug2020
代替
13Aug2020
15Aug2020
16Aug2020
17Aug2020
18Aug2020
22Aug2020
用于打印日期的代码:
mDateView.setText(mDateValue.replace(",", "\n"));
其中 mDateView 是Textview, mDateValue 是包含用逗号分隔的所有日期的字符串
答案 0 :(得分:2)
使用LocalDate
将每个字符串解析为DateTimeFormatter
对象。搜索方式(如果您使用旧的麻烦的SimpleDateFormat
进入页面,请避免这种情况)。为当前间隔的开始和结束创建两个变量。将第一个日期存储到两个 中。循环浏览剩余日期:
循环终止后,打印当前间隔。
如何打印当前间隔:如果开始和结束相等,则仅打印其中一个;否则,请同时打印两者之间的短划线。无论哪种格式,每个打印日期都将转换为所需的格式,例如使用相同的DateTimeFormatter
的原始格式。
要确定当前日期是否是结束日期,请使用plusDays
的{{1}}和isEqual
方法。
快乐的编码。
LocalDate
是现代Java日期和时间API java.time的一部分。 java.time在旧的和较新的Android设备上均可正常运行。它只需要至少 Java 6 。
LocalDate
导入日期和时间类。DateTimeFormatter
org.threeten.bp
。java.time
向Java 6和7(JSR-310的ThreeTen)的反向端口。