Java关于日期转换的笔记

在做项目的时候遇到了关于时间类型和字符串类型互相转换的问题。总结了一些心得,分享给大家。


首先介绍一下常用的时间类型有哪些,大致分为以下六种类型(其中java.text.SimpleDateFormat和java.util.Calendar可以理解为工具类)。

  1. java.util.Date (年、月、日、时、分、秒)
  2. java.sql.Date (年、月、日)
  3. java.sql.Time (时、分、秒)
  4. java.sql.Timestamp (年、月、日、时、分、秒、纳秒)
  5. java.text.SimpleDateFormat
  6. java.util.Calendar

java.util.Date

第一个出场的是老大哥java.util.Date

为什么说他是老大哥,因为java.sql.Datejava.sql.Timejava.sql.Timestamp这三个类都是继承他的。

通过new一个不带参数的对象即可获取系统当前时间。即:

java.util.Date utilDate = new java.util.Date();

通过该对象的getTime()方法可以把时间转换成毫秒数。即:

long utilTime=utilDate.getTime();

java.sql.Date、java.sql.Time、java.sql.Timestamp

接着出场的是java.sql.Datejava.sql.Timejava.sql.Timestamp三兄弟。

他们三个对象被创建出来的时候必须传入一个long类型的变量(毫秒数),即:

java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());
java.sql.Time sqlTime = new java.sql.Time(utilDate.getTime());
java.sql.Timestamp sqlTimestamp = new java.sql.Timestamp(utilDate.getTime());

通过对象的getTime()方法可以把时间转换成毫秒数。即:

long sqlDateTime=sqlDate.getTime();
long sqlTimeTime=sqlTime.getTime();
long sqlTimestampTime=sqlTimestamp.getTime();

java.text.SimpleDateFormat

这个类经常在设置日期格式中起到关键性作用,可以把字符串转换成自己想要的格式的日期类型,也可以把日期类型转换成特定格式的字符串。

**parse(String)**用于字符串转日期

**format(Date)**用于日期转字符串

例如:

//创建一个名为sdf的SimpleDateFormat对象,并构建其为"yyyy-MM-dd"(年月日)格式,当然也可以按需变更格式,例如"yyyy-MM-dd-hh-mm-ss"就是年-月-日-时-分-秒格式。
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

//用format(Date)方法将Date类型转换成字符串类型
String s = sdf.format(new java.util.Date());

//用parse(String)方法将字符串类型转换成Date类型
Date date =  sdf.parse(s)

java.util.Calendar

常见用法:

//创建对象
java.util.Calendar cal = java.util.Calendar.getInstance();  

//Calendar转化为Date  
java.util.Date date = cal.getTime();  

//Date转化为Calendar  
cal.setTime(date); 

//get获取
int year = cal.get(Calendar.YEAR);//获取年份
int month=cal.get(Calendar.MONTH);//获取月份
int day=cal.get(Calendar.DATE);//获取日
int hour=cal.get(Calendar.HOUR);//获取小时
int minute=cal.get(Calendar.MINUTE);//获取分           
int second=cal.get(Calendar.SECOND);//获取秒
int WeekOfYear = cal.get(Calendar.DAY_OF_WEEK);//获取当前周的第几天

//set设置
cal.set(Calendar.YEAR,2019);//设置年份
cal.set(Calendar.MONTH,1);//设置月份
cal.set(Calendar.DATE,1);//设置日
cal.set(Calendar.HOUR,0);//设置小时
cal.set(Calendar.MINUTE,0);//设置分钟
cal.set(Calendar.SECOND,0);//设置秒

//还有很多Calendar的属性,读者可以一一去探索。

值得注意的是,java.util.Calendar的getTime()方法返回的是一个java.util.Date类型的变量。

这个类可以用于处理一些特殊的场景,例如,获取指定月份的第一天和最后一天。

//创建一个名为cal的java.util.Calendar对象
java.util.Calendar cal = java.util.Calendar.getInstance();

//设置Calendar对象的时间
cal.setTime(new SimpleDateFormat("yyyy-MM").parse("年份-月份"));
//示例:cal.setTime(new SimpleDateFormat("yyyy-MM").parse("2008-2"));

//获取上面所输入的月份的最小天数
int firstDay = cal.getMinimum(Calendar.DATE);

//获取上面所输入的月份的最大天数
int lastDay = cal.getActualMaximum(Calendar.DATE);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值