在 Android 中获取当前月份的最后一个时间戳
Get last timestamp of current month in Android
我试图在 Android 上获取当年当月的最后一个时间戳,所以我找到了
getActualMaximum of "calendar" 实例有用,但是当我试图弄清楚 2016 年 8 月的最后一个时间戳是什么时,我得到了错误的天数 30 而不是 31
public static long getLastTimeStampOfCurrentMonth(int month, int year) {
Calendar cal = Calendar.getInstance();
cal.set(year,month, cal.getActualMaximum(Calendar.DAY_OF_MONTH), 23,59,59);
return cal.getTimeInMillis();
}
当我用下个月的最小值减一时,我找到了这个案例的解决方案:
public static long getLastTimeStampOfCurrentMonth(int month, int year) {
Calendar cal = Calendar.getInstance();
cal.set(year,month, cal.getActualMinimum(Calendar.DAY_OF_MONTH)-1, 23,59,59);
return cal.getTimeInMillis();
}
我很好奇是什么导致了这个问题...(我可能发现了一个错误)
使用此方法获取当月最后一天的时间戳...
private long getLastTimeStampOfCurrentMonth() {
Calendar calendar = Calendar.getInstance();
// passing month-1 because 0-->jan, 1-->feb... 11-->dec
calendar.set(Calendar.getInstance().get((Calendar.YEAR)), Calendar.getInstance().get(Calendar.DAY_OF_MONTH), 1);
calendar.set(Calendar.DATE, calendar.getActualMaximum(Calendar.DATE));
Date date = calendar.getTime();
return date.getTime();
}
import java.util.Calendar;
public class test_cal {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(getLastTimeStampOfCurrentMonth(Calendar.AUGUST,2016));
}
public static long getLastTimeStampOfCurrentMonth(int month, int year) {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, year);//leap year 29 Feb;)
cal.set(Calendar.MONTH, month);
cal.set(year,month, cal.getActualMaximum(Calendar.DAY_OF_MONTH), cal.getActualMaximum(Calendar.HOUR_OF_DAY),cal.getActualMaximum(Calendar.MINUTE),cal.getActualMaximum(Calendar.SECOND));
cal.set(Calendar.MILLISECOND,cal.getActualMaximum(Calendar.MILLISECOND));
return cal.getTimeInMillis();
}
}
我试图在 Android 上获取当年当月的最后一个时间戳,所以我找到了
getActualMaximum of "calendar" 实例有用,但是当我试图弄清楚 2016 年 8 月的最后一个时间戳是什么时,我得到了错误的天数 30 而不是 31
public static long getLastTimeStampOfCurrentMonth(int month, int year) {
Calendar cal = Calendar.getInstance();
cal.set(year,month, cal.getActualMaximum(Calendar.DAY_OF_MONTH), 23,59,59);
return cal.getTimeInMillis();
}
当我用下个月的最小值减一时,我找到了这个案例的解决方案:
public static long getLastTimeStampOfCurrentMonth(int month, int year) {
Calendar cal = Calendar.getInstance();
cal.set(year,month, cal.getActualMinimum(Calendar.DAY_OF_MONTH)-1, 23,59,59);
return cal.getTimeInMillis();
}
我很好奇是什么导致了这个问题...(我可能发现了一个错误)
使用此方法获取当月最后一天的时间戳...
private long getLastTimeStampOfCurrentMonth() {
Calendar calendar = Calendar.getInstance();
// passing month-1 because 0-->jan, 1-->feb... 11-->dec
calendar.set(Calendar.getInstance().get((Calendar.YEAR)), Calendar.getInstance().get(Calendar.DAY_OF_MONTH), 1);
calendar.set(Calendar.DATE, calendar.getActualMaximum(Calendar.DATE));
Date date = calendar.getTime();
return date.getTime();
}
import java.util.Calendar;
public class test_cal {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(getLastTimeStampOfCurrentMonth(Calendar.AUGUST,2016));
}
public static long getLastTimeStampOfCurrentMonth(int month, int year) {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, year);//leap year 29 Feb;)
cal.set(Calendar.MONTH, month);
cal.set(year,month, cal.getActualMaximum(Calendar.DAY_OF_MONTH), cal.getActualMaximum(Calendar.HOUR_OF_DAY),cal.getActualMaximum(Calendar.MINUTE),cal.getActualMaximum(Calendar.SECOND));
cal.set(Calendar.MILLISECOND,cal.getActualMaximum(Calendar.MILLISECOND));
return cal.getTimeInMillis();
}
}