CodenameOne修复Calendar.get(Calendar.DAY_OF_WEEK)返回值偏大问题
问题结论
你的修改不正确,无法覆盖全部7天的取值,也不满足u格式的规则要求。
错误原因
CN1的Calendar.DAY_OF_WEEK取值和Java标准一致,对应关系如下:
Calendar.SUNDAY(周日):取值为1Calendar.MONDAY(周一):取值为2Calendar.TUESDAY(周二):取值为3Calendar.WEDNESDAY(周三):取值为4Calendar.THURSDAY(周四):取值为5Calendar.FRIDAY(周五):取值为6Calendar.SATURDAY(周六):取值为7
你使用c.get(Calendar.DAY_OF_WEEK)-1的计算结果,周日会得到0,既超出了u格式要求的1~7取值范围,也不符合「周日对应7」的规则。
正确实现
不需要引入额外类,直接使用如下转换公式即可:
int dayNumber = (c.get(Calendar.DAY_OF_WEEK) + 5) % 7 + 1;
验证结果
逐天匹配1=周一、7=周日的规则:
- 周一:(2+5) %7 +1 = 1 → 符合
- 周二:(3+5) %7 +1 = 2 → 符合
- 周三:(4+5) %7 +1 = 3 → 符合你测试的周三返回结果
- 周四:(5+5) %7 +1 = 4 → 符合
- 周五:(6+5) %7 +1 = 5 → 符合
- 周六:(7+5) %7 +1 = 6 → 符合
- 周日:(1+5) %7 +1 = 7 → 符合
该实现完全兼容Java、Android的标准u格式规则,且满足你在CN1环境下的开发限制。
内容的提问来源于stack exchange,提问作者P5music
相关产品推荐
相关产品推荐

