JAVA_日期和时间处理

参考//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);
	}

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值