Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/207.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 获取Android中当前月份的最后时间戳_Java_Android_Android Calendar - Fatal编程技术网

Java 获取Android中当前月份的最后时间戳

Java 获取Android中当前月份的最后时间戳,java,android,android-calendar,Java,Android,Android Calendar,我试着在安卓上获取一年中当前月份的最后一个时间戳,所以我发现 getActualMaximum的“日历”实例很有用,但当我试图找出2016年8月的最后一个时间戳是什么时,我得到了错误的天数30,而不是31 public static long getLastTimeStampOfCurrentMonth(int month, int year) { Calendar cal = Calendar.getInstance(); cal.set(year,month, cal.get

我试着在安卓上获取一年中当前月份的最后一个时间戳,所以我发现

getActualMaximum的“日历”实例很有用,但当我试图找出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();
}
当我取下一个月的最小值减去1时,我找到了这个案例的解决方案:

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();
}

我很好奇是什么导致了这个问题。。。(我可能发现一个bug)

使用此方法获取当月最后一天的时间戳

 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();
    }

明白了,之前我得到了当前月份的月份天数(本例中为9月),我必须在calander实例上设置相关月份:“cal.set(Calendar.month,month);”之前设置“cal.getActualMaximum(Calendar.DAY,of,of,month);”
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();
    }
}