Date和Calendar日常用法及转换

1.Date类日常使用

  1. 构造方法
构造方法说明
Date()使用系统当前时间创建对象
Date(long date)设置毫秒数以1970/1/1为基准创建日期
Date(int year, int month, int date)创建指定年、月、日的日期对象(基准年份是1900)
Date(int year, int month, int date,int hrs, int min, int sec)创建指定年、月、日、时、分、秒的日期对象(基准年份是1900)
  1. 构造实例
// 获取当前系统时间
Date date1 = new Date();
System.out.println(date1);

// 获取1970-1-1的时间
Date date2 = new Date(0);
System.out.println(date2);

// 获取2018-8-2的时间(设置中,基准年份是1900,月份则是代表已经过去的月份,要加1)
Date date3 = new Date(118,7,2);
System.out.println(date3);

// 获取指定年月日时分秒(设置的基本要求同上)
Date date4 = new Date(118,7,24,8,34,34);
System.out.println(date4);
  1. 常用方法
方法说明
boolean after(Date when)如果当前日期对象在when指定的日期对象之后,返回true,否则返回false
boolean before(Date when)如果当前日期对象在when指定的日期对象之前,返回true,否则返回false
void getTime()获取自1970年1月1日起到指定日期的毫秒数
boolean equals(Object obj)两个日期对象完全相同,返回true,否则返回false
String toString()日期转字符串
  1. 方法实例
// 获得当前系统时间
Date date = new Date();

// 判断日期前后
System.out.println(date.before(new Date(119,1,1))); // true
System.out.println(date.after(new Date(119,1,1)));  // false

// 获得1970年至今的毫秒数
System.out.println(date.getTime());

// 日期对象比较
Date date2 = new Date();
Date date3 = new Date(date.getTime());
System.out.println(date.equals(date2)); // false
System.out.println(date.equals(date3)); // true

// 日期转字符串
System.out.println(date.toString());

2.Calendar类日常使用

  • 注意:calendar类是抽象类,无法实例化,只能通过类中的getInstance()方法才能获得
  1. 常用方法
方法说明
Calendar getInstance()返回默认地区和时区的Calendar对象
int get(int fields)返回调用对象中fields指定部分的值
void set(int fields, int value)将value中指定的值设置到fields指定的部分
void add(int fields, int amount)将amount值添加到fields指定的时间或日期部分
  1. 方法实例
public static void main(String[] args) throws ParseException {
	// 创建包含有当前系统时间的Calendar对象
	Calendar cal = Calendar.getInstance();
	show(cal);
	
	// 设置时间(年月日),注意月份表示实际设置月份的上个月
	cal.set(2018, 1, 1);
	show(cal);
	
	// 设置时间(年月日时分秒)
	cal.set(1987, 7, 2, 2, 12, 12);
	show(cal);
	
	// 单独设置任意位置的时间
	cal.set(Calendar.YEAR, 2019);
	cal.set(Calendar.MONTH, 9);     // 实际设置时间是10月,9月代表已经过去的上个月
	cal.set(Calendar.DATE, 9);
	cal.set(Calendar.HOUR, 9);
	cal.set(Calendar.MINUTE, 9);
	cal.set(Calendar.SECOND, 9);
	show(cal);
	
	// 添加任意位置的时间,比如增加年月
	cal.add(Calendar.YEAR, 1);
	cal.add(Calendar.MONTH, 1);
	show(cal);
}

// 获取Calendar类任意位置的时间
public static void show(Calendar cal){
    System.out.print("日历的时间为:");
    System.out.print(cal.get(Calendar.YEAR) + "年");
    System.out.print((cal.get(Calendar.MONTH)+1) + "月");
    System.out.print(cal.get(Calendar.DATE) + "日");
    System.out.print(cal.get(Calendar.HOUR) + ":");
    System.out.print(cal.get(Calendar.MINUTE) +":");
    System.out.println(cal.get(Calendar.SECOND));
}

3.Date与Calendar转换

  1. Calendar的另外两个重要方法
方法说明
void setTime(Date date)利用Date类型参数设置Calendar时间
Date getTime()返回Date类型的时间对象
  1. 方法实例
// 1.Date转格式化字符串(注意同toString()的区别)
Date date1 = new Date();
SimpleDateFormat df = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
String dateStr = df.format(date1);
System.out.println(dateStr);

// 2.字符串转Date(声明对象时,如果类型是DateFormat而不是SimpleDateFormat,则这里没有applyPattern方法)
String strTime = "2018-2-20 19:13:43";
df.applyPattern("yyyy-MM-dd HH:mm:ss");
Date date2 = df.parse(strTime);
System.out.println(date2);

Calendar cal = Calendar.getInstance();
// 3.Calendar转Date
Date date3 = cal.getTime();
System.out.println(date3);

// 4.Date转Calendar
cal.setTime(date2);
System.out.println(cal.getTime());

4.总结

  1. 操作时间时,Calendar类要更加灵活一些,无论是设置、获取还是修改时间的某一部分,Calendar都能够轻松做到
  2. 无论是Date类还是Calendar类,在设置或获取月份(注意:只获取月份)时,月份数字都代表上个月,比如需要设置10月份,则在代码中应该写的是数字9
  3. System.out.println(new Date()),展示的是真实的月份,不要和第2点搞混
  4. Date类实例化:
    • 参数如果是毫秒数,基准年份是1970;
    • 参数如果是年月日格式,基准年份是1900
  5. Date类与Calendar类,都有一个getTime()方法,注意区别:
    • 在Date类中表示获取1970至所设置时间的毫秒数
    • 在Calendar类中表示转换成Date类型
  6. Date和Calendar之间的转换,用的是Calendar类中setTime()和getTime()方法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值