对时间的各种小操作——博主备忘

DBC 1.7K 0
比如说前端传过来的是2018-10
DateFormat format = new SimpleDateFormat("yyyy-MM");
        Date temporaryDate = null;
        try {
            temporaryDate = format.parse(date);
        } catch (ParseException e) {
            e.printStackTrace();
        }
temporaryDate 这个就直接转成了时间戳!接下来我们可以对他进行我们想要的操作,比如说,输出他们的年、月
SimpleDateFormat dateFormatYEAR = new SimpleDateFormat("yyyy");
        SimpleDateFormat dateFormatMONTH = new SimpleDateFormat("MM");
实例输出年,月也是同理可得
dateFormatYEAR.format(temporaryDate)
我们通过这样也可以知道一年中的某个月有多少天,如下:
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, YEAR);
cal.set(Calendar.MONTH, MONTH - 1); // 7月   
        //输出一个月有多少天  方便下面的遍历
        int maxDate = cal.getActualMaximum(Calendar.DATE);
温馨提示

这里要注意的是,注意看这个位置cal.set(Calendar.MONTH, MONTH - 1),这里的月份是从0开始的,也就是说1月对应的是0,同理12月对应的就是11

这里再给出一个挺实用的方法:判断两个时间是否在同一天
    /***
     * 判断两个时间是否在同一天
     * @param millis1
     * @param millis2
     * @param timeZone
     * @return
     */
    public static boolean isSameDay(long millis1, long millis2, TimeZone timeZone) {
        long interval = millis1 - millis2;
        return interval < 86400000 && interval > -86400000 && millis2Days(millis1, timeZone) == millis2Days(millis2, timeZone);
    }

    private static long millis2Days(long millis, TimeZone timeZone) {
        return (((long) timeZone.getOffset(millis)) + millis) / 86400000;
    }
注意这里传的是时间戳可以这样子转换
long endTime = activitiesLists.get(i).getDateEnd().getTime();// 直接转换成long
懂的都知道,=号右边的是Timestamp
isSameDay(startTime, endTime, TimeZone.getDefault())
这样就没问题了!

发表评论 取消回复
表情 图片 链接 代码

分享