java如何在Android中获取一年的开始日期和结束日期?
我需要帮助获取本年度、去年和明年的开始和结束日期
下面是我的代码:这个代码可以正常工作一个月,我可以修改它一年吗
注意:此代码仅作为示例
protected void getDataByMonths(int currentDayOfMonth) {
Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
int month;
if (currentDayOfMonth >= 2) {
month = calendar.get(Calendar.MONTH) + 1;
} else {
month = calendar.get(Calendar.MONTH) - currentDayOfMonth;
}
int day = 1;
calendar.set(year, month, day);
DateFormat df = new SimpleDateFormat("MM/dd/yyyy");
int numOfDaysInMonth = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
String firstday = String.valueOf(df.format(calendar.getTime()));
calendar.add(Calendar.DAY_OF_MONTH, numOfDaysInMonth - 1);
String lastday = String.valueOf(df.format(calendar.getTime()));
String result = getButtonName(button) + " From :" + getDateInMonthFormat(firstday) + " " + "To :" + getDateInMonthFormat(lastday);
finalcontacts = mySqliteDBhelper.getContactsBetweenRange(button, getDateInMilliseconds(firstday), getDateInMilliseconds(lastday));
finalstatus.setText(result);
}
# 1 楼答案
爪哇。时间
您使用的是麻烦的旧遗留日期时间类,现在已被java取代。时间课
首先获取当前日期
^{} 类表示一个只包含日期的值,不包含一天中的时间和时区
时区对确定日期至关重要。在任何一个特定的时刻,世界各地的日期因地区而异。例如,在Paris France午夜后几分钟是新的一天,而在Montréal Québec仍然是“昨天”
使用
Year
将全年表示为对象通常在日期时间工作中,我们使用半开放方法表示一段时间。在这种方法中,开始是包含的,而结束是独占的。所以一年从1月1日开始,一直持续到下一年的1月1日,但不包括在内
如果在Java8上,可以包含ThreeTen-Extra项目及其^{} 类来表示时间跨度
否则你自己做
如果你真的需要一年的最后一天,你可以从下一年的第一天减去一天。更简单的方法是使用^{} 类中定义的^{}
关于java。时间
java.time框架内置于Java8及更高版本中。这些类取代了^{} 、^{} 、&^{}
目前位于maintenance mode的Joda-Time项目建议迁移到java。时间到了
要了解更多信息,请参阅Oracle Tutorial。并在Stack Overflow中搜索许多示例和解释
java的大部分内容。时间功能被向后移植到Java 6&;7 in ThreeTen-Backport并进一步适应Androidin ThreeTenABP(见How to use…)
ThreeTen-Extra项目扩展了java。有额外课程的时间。这个项目是java未来可能增加的一个试验场。时间你可以在这里找到一些有用的类,比如^{} 、^{} 、^{} 和more
# 2 楼答案
检查一下:
如何使用:
GetYearSlot(1,fromDate):它提供从您通过的日期算起的下一年(输入1)
GetYearSlot(0,fromDate):它提供从您通过的日期算起的当前年份(输入0)
GetYearSlot(-1,fromDate):它提供从您过去的日期算起的上一年(输入-1)
# 3 楼答案
假设您不能使用
Java 8
,下面是如何做到的:输出: