Java时间操作

Java时间操作

一、java.util.Date

Date的每一个实例用于表示一个确切的时间点,由于Date设计存在缺陷,所以在JDK1.1以后大部分方法,就被声明为过时的,不再建议使用。现在使用Date仅用来表示时间,时间相关的操作全部使用Calendar来代替。

//默认是系统的当前时间
Date date = new Date();
//输出结果:Tue Jul 17 07:59:05 CST 2018
System.out.println(date);

//获取date日期的年份,Date大部分方法都是过时的,开发时不要使用
//已过时
int year = date.getYear();
System.out.println(year);

//获得1970 年 1 月 1 日 00:00:00 GMT 以后到date时间中间差的毫秒数
long time = date.getTime();
System.out.println(time);

二、java.util.Calendar

日历类,定义了操作时间的相关方法

Date大部分方法声明为过时的而代替方案就是使用Calendar

Calendar本身是抽象类,规定了操作时间的方法定义

常用实现类GregorianCalendar,即:阳历立法

Calendar提供了一个静态方法getInstance来根据

当前系统所在地区返回一个适用的实现类,大部分地区返回的都是阳历实现类

1.基本使用

//默认创建出来表示当前系统时间
Calendar calendar = new GregorianCalendar();

/*
 * Date getTime()
 * 获取一个Date该对象就表示当前calendar所表示的日期
 */
Date date = calendar.getTime();
//Wed Jul 18 07:02:05 CST 2018
System.out.println(date);

/*
 * void setTime(Date date)
 * 使当前Calendar表示给定的Date所表示的日期
 */
calendar.setTime(date);

2.获取指定时间分量

Calendar calendar = Calendar.getInstance();
//获取现在是哪一年
int year = calendar.get(Calendar.YEAR);
//获取现在是哪一月(从0开始)
int month = calendar.get(Calendar.MONTH)+1;
//获取现在是哪一天
int day = calendar.get(Calendar.DATE);
//获取当前小时数
int hour = calendar.get(Calendar.HOUR_OF_DAY);
//获取当前分钟数
int minute = calendar.get(Calendar.MINUTE);
//获取当前秒数
int second = calendar.get(Calendar.SECOND);
//获取今天是今年的第几天
int doy = calendar.get(Calendar.DAY_OF_YEAR);
//获取今天是星期几
String[] data = {"日", "一", "二", "三", "四", "五", "六"};
int dow = calendar.get(Calendar.DAY_OF_WEEK)-1;
String week = data[dow];

/*
 * int getActualMaximum(int feild)
 * 获取指定时间分量所允许的最大值,参考时间的当前calendar所表示的日期
 */
//calendar日期所在月共有多少天
int day_of_month_max = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
//calendar日期所在年共有多少天
int day_of_year_max = calendar.getActualMaximum(Calendar.DAY_OF_YEAR);

3.设置指定时间分量

Calendar calendar = Calendar.getInstance();

//设置年
calendar.set(Calendar.YEAR, 2019);
//设置月
calendar.set(Calendar.MONTH, Calendar.AUGUST);
//设置天
calendar.set(Calendar.DAY_OF_MONTH, 18);
//设置时
calendar.set(Calendar.HOUR_OF_DAY, 7);
//设置分
calendar.set(Calendar.MINUTE, 18);
//设置秒
calendar.set(Calendar.SECOND, 0);

4.对指定时间分量加或减去给定的值

/*
 * void add(int field, int value)
 * 对指定时间分量加给定值,若传入的值为负数,则是送去给定的值
 */
Calendar calendar = Calendar.getInstance();
//加1年
calendar.add(Calendar.YEAR, 1);
//加2个月
calendar.add(Calendar.MONTH, 2);
//减3天
calendar.add(Calendar.DAY_OF_YEAR, -3);

三、java.text.SimpleDateFormat

可以按照一个给定的日期格式在Date与String之间相互转换

1.Date转String

Date date = new Date();

/*
    2018-07-18 6:36:00
    yyyy-MM-dd HH:mm:ss
 */
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// 将当前时间按照yyyy-MM-dd HH:mm:ss格式化成字符串
String date_format = sdf.format(date);
// 2018-07-18 06:38:23
System.out.println(date_format);

2.String转Date

String str_time = "2018-07-18 06:38:23";
/*
    2018-07-18 6:36:00
    yyyy-MM-dd HH:mm:ss
 */
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//按照sdf指定的日期格式将给定字符串解析为Date对象
Date date = sdf.parse(str_time);
//Wed Jul 18 06:38:23 CST 2018
System.out.println(date);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值