java中关于时间控制的操作

Date类

来自java.util.Date 时间类(描述具体的时间点)
UTC时间 世界调整时间 1970.1.1 00:00:00
GMC时间 格林威治时间

Date中获取当前时间的方法

Date date = new Date();
		System.out.println(date);

输出结果:Sat Jul 20 13:46:04 CST 2019
这种显示结果为毫秒数

long time = date.getTime();
		System.out.println(time);

输出结果:1563601564013

SimpleDateFormat类

Java.test.SimpleDateFormat
该类主要用来规范时间日期的格式

1.会写时间日期格式
yyyy = 2019
M-------------------------------- 月
d-------------------------------- 日
H-------------------------------- 时(24小时制) h(12小时制)
a-------------------------------- 上/下午
m-------------------------------- 分
s-------------------------------- 秒
E-------------------------------- 周几

2019-07-20 09:50:25
yyyy -MM-dd HH:mm:ss E
2.记住两种转换方式
日期Date转String类型
SimpleDateFormat提供一个转换方法
例子:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss E a");
		Date date = new Date();
		System.out.println(date);
String time = sdf.format(date);
		System.out.println(time);

输出结果:Sat Jul 20 11:51:46 CST 2019

用户输入String类型转Date类型
同样是SimpleDateFormat提供一个转换方法
例子:

SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss E");
		String str = "2018-08-08 12:12:12 星期六";
		Date d = sdf1.parse(str);
		System.out.println(d);

输出结果:2019-07-20 11:51:46 星期六 上午

Calendar类

Java.util.Calender
日历类
用于操作时间

格里高利历法

本身是一个抽象类
常用的实现类封装了一个格里高利历法
Calendar由于不能被直接实例化,所以提供了一个静态方法getInstance(),以便于我们用来获取一个适应的实现类实例

创建一个格里高利对象

Calendar c = Calendar.getInstance();`//第一种,推荐使用这种
		System.out.println(c);

Calendar c1 = new GregorianCalendar();//第二种
		System.out.println(c1);

格里高利对象输出结果:java.util.GregorianCalendar[time=1563608172403,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id=“Asia/Shanghai”,offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2019,MONTH=6,WEEK_OF_YEAR=29,WEEK_OF_MONTH=3,DAY_OF_MONTH=20,DAY_OF_YEAR=201,DAY_OF_WEEK=7,DAY_OF_WEEK_IN_MONTH=3,AM_PM=1,HOUR=3,HOUR_OF_DAY=15,MINUTE=36,SECOND=12,MILLISECOND=403,ZONE_OFFSET=28800000,DST_OFFSET=0]

将当前的Calendar所表示的时间转为Date类型

Date date = c.getTime();
		System.out.println(date);
		long time = c.getTime().getTime();
		System.out.println(time);

输出结果:Sat Jul 20 15:36:12 CST 2019

输出毫秒数
c.setTime(new Date());

自己设置Calendar里的时间
//设置年
		c.set(Calendar.YEAR,2018);
		//设置月(设置月时,从0开始表示一月)
		c.set(Calendar.MONTH,11);
		/*
		 * 设置日
		 * 和日期相关的时间分量
		 * DAY_OF_MONTH 月中的天
		 * DAY_OF_YEAR 年中的天
		 * DAY_OF_WEEK 周中的天
		 */
		c.set(Calendar.DAY_OF_MONTH,13);
		//设置时
		/*
		 * HOUR_OF_DAY  24小时制
		 * HOUR         12小时制
		 */
		c.set(Calendar.HOUR_OF_DAY,13);
		//设置分
		c.set(Calendar.MINUTE,12);
		//设置秒
		c.set(Calendar.SECOND,8);
		//设置周几(减一才是实际周几,1代表周日,2代表周一,以此类推......)
		c.set(Calendar.DAY_OF_WEEK,1);
然后把结果变为String类型输出
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd  HH:mm:ss E");
		Date date = c.getTime();
		String str = sdf.format(date);
		System.out.println(str);

输出结果:2018-12-09 13:12:08 星期日

获取Calendar里的时间信息

    //获取年
    int year = c.get(Calendar.YEAR);
    		System.out.println("今年是"+year+"年");
    		//获取月
    		int month = c.get(Calendar.MONTH)+1;
    		System.out.println("这是今年第"+month+"月");
    		//获取日
    		int d = c.get(Calendar.DAY_OF_WEEK)-1;
    		System.out.println("这是这周第"+d+"天");
    		int h = c.get(Calendar.HOUR_OF_DAY);
    		System.out.println("当前小时为:"+h);
    		int m = c.get(Calendar.MINUTE);
    		System.out.println("当前分钟为:"+m);
    		int s = c.get(Calendar.SECOND);
    		System.out.println("当前秒数为:"+s);

输出结果:今年是2019年
这是今年第7月
这是这周第6天
当前小时为:16
当前分钟为:24
当前秒数为:39

获取当前Calendar表示的时间中指定时间分量的最大值
Calendar c = Calendar.getInstance();
		//获取这一年这中一共有多少天
		int year = c.getActualMaximum(Calendar.DAY_OF_YEAR);
		System.out.println(year);
		//获取一个月有多少天
		int mon = c.getActualMaximum(Calendar.DAY_OF_MONTH);
		System.out.println(mon);
		//获取一年有多少周
		int i = c.getActualMaximum(Calendar.WEEK_OF_YEAR);
		System.out.println(i);

输出结果:365
31
52

计算时间的方法
Calendar c = Calendar.getInstance();
		//计算五个月前是哪一天
		c.add(Calendar.MONTH,-5);
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss");
		String time = sdf.format(c.getTime());
		System.out.println(time);

输出结果:
2019-02-20 16-25-54

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值