为了管理日期,我使用了Calendar类。我将时间戳保存在数据库中,使用
日历时间戳= Calendar.getInstance();
我可以使用长值存储日期来从数据库中保存和检索日期。
这是我的问题:当我要存储时间戳时,我需要知道数据库中是否已经存在属于同一周的时间戳。为此,我认为我可以使用以下两种方法:
timestamp.get(Calendar.YEAR)和timestamp.get(Calendar.WEEK_OF_YEAR)
来唯一标识一个星期,但是对于连续几天都属于连续两年的星期,情况并非如此。
这是我在2014年最后一周得到的一个例子。
2014年12月27日,星期六年:2014年星期:52
2014年12月28日,星期日:2014年的一周:1
2014年12月29日,星期一年份:2014星期:1
2014年12月30日,星期二:2014年星期:1
2014年12月31日,星期三:2014年星期:1
2015年1月1日,星期四:2015年星期:1
2015年1月2日,星期五年:2015年星期:1
2015年1月3日,星期六年:2015年星期:1
2015年1月4日,星期日:2015年的星期:2
从2014年12月28日到2015年3月1日这一天属于同一周(在Java中,该周从星期日开始),但是它们的年份不同,因此这对夫妇(YEAR,WEEK_OF_YEAR)没有给我他们属于同一周的信息。
我该如何解决?
正如@basil所建议的那样,我尝试了Joda-Time库,并在那里找到了解决问题的方法。要获取一年中的星期,我可以使用方法getWeekOfWeekyear()并获得年份,我可以使用方法getWeekyear()
这样,这两个值唯一地标识了属于同一周的日期,该周从星期一开始,到星期日结束(与Java日历类相比,这是另一个附加值)。
以下是该问题的相同示例。
DateTime[] timestamp = new DateTime[10];
for(int i=0; i<10; i++){
//set the start of the period
DateTime time = new DateTime(2014, 12, 27, 18, 30, 50);
//add i days to the start date
timestamp[i] = time.plus(Period.days(i));
int weekYear = timestamp[i].getWeekyear();
int weekOfWeekyear = timestamp[i].getWeekOfWeekyear();
Log.d(Constants.LOG_TAG, timestamp[i].toString("EEEE, MMMM d, yyyy") + " | year.week = " + weekYear + "." + weekOfWeekyear);
}
结果是:
2014年12月27日,星期六| 年周= 2014.52
2014年12月28日,星期日| 年周= 2014.52
2014年12月29日,星期一| 年周= 2015.1
2014年12月30日,星期二| 年周= 2015.1
2014年12月31日,星期三| 年周= 2015.1
2015年1月1日,星期四| 年周= 2015.1
2015年1月3日,星期六| 年周= 2015.1
2015年1月4日,星期日| 年周= 2015.1
2015年1月5日,星期一| 年周= 2015.2
使用该库似乎还有许多其他优点,它将对我必须执行的其他计算很有用。
谢谢@basil。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句