【发布时间】:2016-03-16 17:55:21
【问题描述】:
我有一些日期以MM/dd 格式指定的项目,但没有指定年份。
但是,数据的上下文中隐含了年份,因为数据显示的日期不超过“当前日期”(在数据中指定)12 个月内
例如,假设当前日期是 2013 年 1 月 31 日。 这意味着从 2012 年 2 月 1 日到 2013 年 1 月 31 日(含)会有信息。
我在这里面临的问题是,因为数据中没有指定年份,所以我需要自己生成年份,然后才能将它们加载到我的数据库中。
从数据的上下文中,我们知道任何大于当前月份的日期都来自上一年,而任何小于或等于当前月份的日期都是当前年份。
所以假设当前日期是 2013 年 1 月,我们有类似
01/31 - 2013
01/01 - 2013
12/31 - 2012
02/29 - 2012
现在,这里的问题是最后一行的日期。
2012 年是闰年,所以 2 月 29 日确实存在。 但是,2013 年不是。
我目前的日期解析方法如下(使用SimpleDateFormat)
- 获取日期:01/31
- 将当前年份附加到它:01/31/2016
- 使用日期格式
MM/dd/yyyy解析日期
日期解析是在严格模式下执行的,所以像 02/29 这样的日期不会滚动到 03/01。
但是,这个算法在闰年会失败,因为假设当前年份是 2013 年,我将尝试解析 02/29/2013,它会失败。
我可以使用什么方法来确定日期的年份?
【问题讨论】:
-
您的要求不明确。您将 1/31 显示为 2013 年,但 2012 年 1 月 31 日距当前日期 2012 年 1 月 1 日不到 12 个月。
-
@JimmyJames 为了清楚起见,我加了几天。