java常用日期转换工具

项目开发经常需要日期转换,发现java.time包的API很好用,特此记录

import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.Calendar;
import java.util.Date;


public class DateUtil {
    public static void main(String[] args) {
        System.out.println(getTimeBefore(System.currentTimeMillis()));
    }
    /*
     * @Description 输入yyyy-MM-dd字符串,返回yyyyMMdd,如需改变格式,只需要改DateTimeFormatter.ISO_LOCAL_DATE为DateTimeFormatter.BASIC_ISO_DATE
     */
    public static String getTimeStrBefore(String timeStr, int day) {
        LocalDate date = LocalDate.parse(timeStr, DateTimeFormatter.ISO_LOCAL_DATE);
        date = date.minusDays(day);
        return date.format(DateTimeFormatter.BASIC_ISO_DATE);
    }
    /*
     * @Description 输入字符串,返回Long
     */
    public static long getTimeBefore(String timeStr, int day) {
        LocalDate date = LocalDate.parse(timeStr, DateTimeFormatter.ISO_LOCAL_DATE);
        date = date.minusDays(day);
        return date.atStartOfDay(ZoneId.systemDefault()).toEpochSecond() * 1000;
    }
    /*
     * @Description 输入Long,返回字符串
     */
    public static String getTimeBefore(Long time) {
        Date date = new Date(time);
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
        String dateStr = sdf.format(date);
        return dateStr;
    }
    /*
     * @Description 输入Long,返回字符串,第二种方式,可灵活获取之前或者之后的时间
     */
    public static long getTimeBefore(long time, int day, int hour) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTimeInMillis(time);
        calendar.add(Calendar.DATE, -day);
        calendar.set(Calendar.HOUR_OF_DAY, hour);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.SECOND, 0);
        calendar.set(Calendar.MILLISECOND, 0);
        return calendar.getTimeInMillis();
    }
}

 

你可能感兴趣的:(java)