import java.text.SimpleDateFormat;
import java.time.Duration;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoField;
import java.util.Calendar;
import java.util.Date;
/**
* SimpleDateFormat 线程不安全 处理时区麻烦
* 1.8以后 LocalDate、LocalTime、LocalDateTime 优先选择、线程安全操作简单
*/
public class DataTest {
public static void main(String[] args) {
/**
*使用SimpleDateFormat计算日期
*/
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println("SimpleDateFormat当前日期:" + df.format(new Date()));
System.out.println("SimpleDateFormat一天后的日期:" + df.format(new Date().getTime() + 1 * 24 * 60 * 60 * 1000));
System.out.println();
/**
*使用Calender计算日期
*/
Calendar cal = Calendar.getInstance();
cal.setTime(new Date());//设置起时间
cal.add(Calendar.DATE, 1);//增加一天
System.out.println("Calendar计算一天后时间" + df.format(cal.getTime()));
Calendar calNow = Calendar.getInstance();
calNow.setTime(new Date());
//这里不用String.valueOf的话会丢失精度
System.out.println("Calender计算时间差:" + String.valueOf(cal.getTimeInMillis() - calNow.getTimeInMillis()) + "秒");
System.out.println();
/**
* 使用LocalDateTime计算日期
*/
LocalDateTime now = LocalDateTime.now();
System.out.println("LocalDateTime当前日期:" + now.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
LocalDateTime dateOneDay = now.plusDays(1);
System.out.println("LocalDateTime一天后的日期:" + dateOneDay.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
/**
* LocalDateTime时间相差计算
*
*/
System.out.println("LocalDateTime两个时间相差:" + (dateOneDay.toEpochSecond(ZoneOffset.UTC) - now.toEpochSecond(ZoneOffset.UTC)) + "秒");
System.out.println();
int i = now.get(ChronoField.DAY_OF_WEEK);//[1-7] 获取一周中的星期几
System.out.println("数字版本周几:" + i);
System.out.println("英文版版本周几:" + now.getDayOfWeek());
System.out.println();
/**
* 时间相差计算
* Duration.between
*/
Duration between = Duration.between(now, dateOneDay);
System.out.println("Duration.between两个时间相差:" + between.toSeconds() + "秒");
/**
* LocalDateTime修改日期
*/
System.out.println("LocalDateTime修改日期为10点:" + dateOneDay.withHour(10).format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
}
}
08-03
418