参考//https://www.cnblogs.com/lingshang/p/10980288.html
package test001.test;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.Period;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.util.Date;
import java.util.TimeZone;
import java.util.Calendar;
public class tt {
public static void main(String[] args) throws Exception{
Date now = new Date();
//当前日期
System.out.println(now); //Wed Nov 13 22:10:27 CST 2019
//把Date对象转为字符串
System.out.println(now.toString()); //Wed Nov 13 22:10:27 CST 2019
//把Date对象转为时间戳
System.out.println(now.getTime()); //1573654227248
//将时间戳转为Date对象
Date dt11 = new Date();
dt11.setTime(1573654227248L);
System.out.println(dt11);
// 把Date按照格式转换成字符串
//yyyy: 年, MM: 月, dd: 日, HH: 时, mm: 分,ss: 秒
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
System.out.println(sdf.format(now)); //2019-11-13 22:27:27
//把字符串格式化为Date对象
String str1 = "2019-11-13 21:43:43"; //不写时间,默认为00:00:00
Date date1 = sdf.parse(str1);
System.out.println(date1); //Wed Nov 13 21:00:43 CST 2019
//Calendar(日历)
Calendar cl = Calendar.getInstance();
//当前结构化时间
System.out.println(cl);
//java.util.GregorianCalendar[time=1573654227327,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=29,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2019,MONTH=10,WEEK_OF_YEAR=46,WEEK_OF_MONTH=3,DAY_OF_MONTH=13,DAY_OF_YEAR=317,DAY_OF_WEEK=4,DAY_OF_WEEK_IN_MONTH=2,AM_PM=1,HOUR=10,HOUR_OF_DAY=22,MINUTE=10,SECOND=27,MILLISECOND=327,ZONE_OFFSET=28800000,DST_OFFSET=0]
int y = cl.get(Calendar.YEAR);
System.out.println(y); //2019
int m = cl.get(Calendar.MONTH);
System.out.println(m); //10(1~12月:0~11)
int d = cl.get(Calendar.DAY_OF_MONTH);
System.out.println(d); //13
int hh = cl.get(Calendar.HOUR_OF_DAY);
System.out.println(hh); //22
int mm = cl.get(Calendar.MINUTE);
System.out.println(mm); //10
int ss = cl.get(Calendar.SECOND);
System.out.println(ss); //27
int ms = cl.get(Calendar.MILLISECOND);
System.out.println(ms); //327
//时间戳
Date date = cl.getTime();
System.out.println(date); //Wed Nov 13 22:10:27 CST 2019
//获得毫秒数
long ms1 = cl.getTimeInMillis();
System.out.println(ms1); //1573654227327
cl.setTime(date1);
System.out.println(cl);
//当前时间java.util.GregorianCalendar[time=1573654654104,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=29,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2019,MONTH=10,WEEK_OF_YEAR=46,WEEK_OF_MONTH=3,DAY_OF_MONTH=13,DAY_OF_YEAR=317,DAY_OF_WEEK=4,DAY_OF_WEEK_IN_MONTH=2,AM_PM=1,HOUR=10,HOUR_OF_DAY=22,MINUTE=17,SECOND=34,MILLISECOND=104,ZONE_OFFSET=28800000,DST_OFFSET=0]
//设置时间java.util.GregorianCalendar[time=1573650043000,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=29,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2019,MONTH=10,WEEK_OF_YEAR=46,WEEK_OF_MONTH=3,DAY_OF_MONTH=13,DAY_OF_YEAR=317,DAY_OF_WEEK=4,DAY_OF_WEEK_IN_MONTH=2,AM_PM=1,HOUR=9,HOUR_OF_DAY=21,MINUTE=0,SECOND=43,MILLISECOND=0,ZONE_OFFSET=28800000,DST_OFFSET=0]
//==cl.setTimeInMillis(1573654654104);
//设置时区
cl.setTimeZone(TimeZone.getTimeZone("America/New_York"));
System.out.println(cl);
//java.util.GregorianCalendar[time=1573650043000,areFieldsSet=false,areAllFieldsSet=false,lenient=true,zone=sun.util.calendar.ZoneInfo[id="America/New_York",offset=-18000000,dstSavings=3600000,useDaylight=true,transitions=235,lastRule=java.util.SimpleTimeZone[id=America/New_York,offset=-18000000,dstSavings=3600000,useDaylight=true,startYear=0,startMode=3,startMonth=2,startDay=8,startDayOfWeek=1,startTime=7200000,startTimeMode=0,endMode=3,endMonth=10,endDay=1,endDayOfWeek=1,endTime=7200000,endTimeMode=0]],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2019,MONTH=10,WEEK_OF_YEAR=46,WEEK_OF_MONTH=3,DAY_OF_MONTH=13,DAY_OF_YEAR=317,DAY_OF_WEEK=4,DAY_OF_WEEK_IN_MONTH=2,AM_PM=1,HOUR=9,HOUR_OF_DAY=21,MINUTE=0,SECOND=43,MILLISECOND=0,ZONE_OFFSET=28800000,DST_OFFSET=0]
/*Date c.getTime() 获得Date对象
long getTimelnMillis() 获得毫秒数
get(int field) 获得年月日, 时分秒
setTime(Date) 设定时间
setTimeInMillis(long) 根据时间戳设置时间
set(int field, int value) 根据年月日等设定时间
setTimeZone(TimeZone) 更改时区
add(int field, int value)
*/
Calendar cl2 = Calendar.getInstance();
//设置为10月
System.out.println(888888);
cl2.set(Calendar.MONTH, 9);
System.out.println(cl2.get(Calendar.MONTH)); //9
//设置年月日
cl2.set(2088, 9, 8);
System.out.println(cl2.get(Calendar.YEAR)); //2088
//加5天
cl2.add(Calendar.DAY_OF_MONTH, 5);
System.out.println(cl2.get(Calendar.DAY_OF_MONTH)); //18
//加2月
cl2.add(Calendar.MONTH, 2);
System.out.println(cl2.get(Calendar.MONTH)); //0(1月)
//减2月
cl2.add(Calendar.MONTH, -2);
System.out.println(cl2.get(Calendar.MONTH)); //10
//加2年
cl2.add(Calendar.YEAR, 1);
System.out.println(cl2.get(Calendar.YEAR)); //2020
//加3小时
cl2.add(Calendar.HOUR_OF_DAY, 3);
System.out.println(cl2.get(Calendar.HOUR_OF_DAY)); //1
//LocalDateTime
//当前日期
LocalDate ld = LocalDate.now();
System.out.println(ld); //2019-11-13
//当前时间
LocalTime lt = LocalTime.now();
System.out.println(lt); //22:38:09.858
//当前日期和时间
LocalDateTime ldt = LocalDateTime.now();
System.out.println(ldt); //2019-11-13T22:39:16.323
//时间运算
LocalDateTime now1 = LocalDateTime.now();
//加1年
LocalDateTime d1 = now1.plusYears(1); //2019-11-14T21:11:47.480
System.out.println(d1); //2020-11-14T21:11:47.505
//减一年
LocalDateTime d2 = d1.minusYears(1);
System.out.println(d2); //2019-11-14T21:11:47.505
//判断时间先后
LocalDate d11 = LocalDate.of(2019, 11, 20);
LocalDate d22 = LocalDate.of(2021, 10, 20);
Period p = d11.until(d22);
//相差1年11个月
System.out.println(p.getDays()); //0
System.out.println(p.getMonths()); //11
System.out.println(p.getYears()); //0
System.out.println(p); //P1M13D
//相差多少天
System.out.println(Math.abs(d11.toEpochDay() - d22.toEpochDay())); //366
//ZonedDateTime,带时区时间
//本地时区
ZonedDateTime zsh = ZonedDateTime.now();
System.out.println(zsh); //2019-11-14T21:24:14.221+08:00[Asia/Shanghai]
//纽约时区
ZonedDateTime zny = ZonedDateTime.now(ZoneId.of("America/New_York"));
System.out.println(zny); //2019-11-14T08:28:56.876-05:00[America/New_York]
//上海时区转为纽约时区
ZonedDateTime ny = zsh.withZoneSameInstant(ZoneId.of("America/New_York"));
System.out.println(ny); //2019-11-14T08:28:56.876-05:00[America/New_York]
// 把LocalDateTime转换成ZonedDateTime
ZonedDateTime sh = LocalDateTime.now().atZone(ZoneId.systemDefault());
System.out.println(sh); //2019-11-14T21:28:56.878+08:00[Asia/Shanghai]
// UTC/GMT
DateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmmss");
dateFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
String current_gmt = dateFormat.format(new java.util.Date());
long current_gmt_long = Long.parseLong(current_gmt);
}
}