android - 如何在 android 中比较 mycurrent 日期和 Quarterwise
问题描述
嗨,在下面的代码中,我有一个从 Api 获取的日期列表。从 Arraylist 我正在检查每个日期。如果第一季度和上季度之间的日期。我正在显示计数。那个日期有多少次.
谁能帮我在哪里做错了
例子:
modifiedtime_list->29-05-2020
Firstquarter-> 01-04-2020
lastDayOfQuarter->30-06-2020
预期输出:1
爪哇:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
localModifiedDate = LocalDate.parse(opportunityModel.getModifiedtime());
Log.d("localModifiedDate", String.valueOf(localModifiedDate));
LocalDate localDate = LocalDate.now();
firstDayOfQuarter = localDate.with(localDate.getMonth().firstMonthOfQuarter())
.with(TemporalAdjusters.firstDayOfMonth());
Log.d("firstDayOfQuarter", String.valueOf(firstDayOfQuarter));
lastDayOfQuarter = firstDayOfQuarter.plusMonths(2)
.with(TemporalAdjusters.lastDayOfMonth());
Log.d("lastDayOfQuarter", String.valueOf(lastDayOfQuarter));
if (firstDayOfQuarter.isAfter(localModifiedDate) && lastDayOfQuarter.isBefore(localModifiedDate)) {
Count_opportunity = Collections.frequency(salesstage_list, "Opportunity");
System.out.println("Count_opportunity is: "+ Count_opportunity);
}
}
解决方案
这是错误的:
if (modifiedtime_list.contains(
modifiedtime.compareTo(firstDayOfQuarter1) >= 0)
&& (modifiedtime_list.contains(
modifiedtime.compareTo(lastDayOfQuarter1) >= 0))) {
为了便于阅读,我分成了几行。
您将布尔值传递给modifiedtime_list.contains()
两次(false
据我所知,两次)。如果我从您的代码中猜对了,它modifiedtime_list
是一个String
对象列表,因此它不包含任何布尔值。因此contains()
,无论涉及哪个日期,都返回 false。
我建议:
- 不要为你的季度使用列表。开始和结束日期都很好。
- 不要使用字符串作为日期。
LocalDate
对象更好。 使用
isBefore
和isAfter
/或isEqual
方法LocalDate
确定您的日期是否在季度内。或者使用:YearMonth firstYearMonthOfQuarter = YearMonth.from(time) .with(time.getMonth().firstMonthOfQuarter());
然后将其
YearMonth
与代表相关季度第一个月的数据进行比较,看看它们是否相等。
编辑
这更接近:
if (firstDayOfQuarter.isAfter(localModifiedDate)
&& lastDayOfQuarter.isBefore(localModifiedDate)) {
不过,恐怕您可能已经颠倒了每个子条件。如果我正确阅读了您的代码,您是在询问 3 月 1 日是否在 5 月 29 日之后,而 6 月 30 日是否在 5 月 29 日之前。这永远不会是真的——当用其他日子代替 5 月 29 日时也不会。如果每个部分都被否定,它会是什么样子?
if (! firstDayOfQuarter.isAfter(localModifiedDate)
&& ! lastDayOfQuarter.isBefore(localModifiedDate)) {
将“不之后”视为“之前或之后”。并且“不在之前”作为“在或之后”。
推荐阅读
- javascript - 班级列表显示错误。我正在使用 swatch 选择变体我想将 jQuery 转换为纯 javascript 来选择?
- ionic-framework - Ionic V1:无法构建离子 APK 找不到模块“./array/insert”
- push-notification - 进行 Cordova 构建 Android 时的最新 cordova-plugin-mfp-push 错误
- android - 用 Sceneform sdk 中可渲染的另一个节点替换节点可渲染(相同的旋转、位置和缩放)
- java - 在服务器上部署多模块项目后,maven 是否需要互联网连接
- batch-file - 如何使用批处理文件运行 Teraterm 和 TTL 文件?
- javascript - 移动设备与 css 的触摸事件
- css - 将文本复制到离子中的剪贴板
- javascript - 使用 HTML 和 Javascript 将字符串格式的日期与日期格式的当前日期进行比较
- mysql - mysql用另一个字符替换一个字符