java处理日期
三种方式:
Date:最老的方式,主要提供时间戳转换
分析:用SimpleDateFormat 设置格式在String与Date之间转换
ps:操作繁琐,并且很多方法已被淘汰。
比较大小:转时间戳比较:dateD.getTime() >= today.getTime()
例子:
String time = "2020-04-07 22:55:11 745";
//格式要一致
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
Date dateTime = sdf.parse(time);
System.out.println(dateTime);
Calendar:主流,主要提供操作时间的工具类
分析:可以将Date类型的数据转Calendar,或者直接set一个日期
ps:功能很多,操作方便,方便修改日期,比较日期等操作。
比较大小:直接使用功能比较:nowCalendar.before(lastCalendar) : nowCalendar<lastCalendar (没有is与jodatime相反)
缺点:转字符串还是需要SimpleDateFormat
例子:
String time = "2020-04-07 22:55:11 745";
//格式要一致
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
Date dateTime = sdf.parse(time);
Calendar calendar = new GregorianCalendar();
calendar.setTime(date);
//设置月份为1月
calendar.set(Calendar.DAY_OF_MONTH,1);
joda-time:最新的方式,相对较高封装的工具类
分析:
缺点需要导入joda-time包;
优点支持string、date直接转DateTime,也支持DateTime直接转String,不需要SimpleDateFormat做中间转换。
比较大小:now.isBefore(last) :last在now之前,last<now
例子:
DateTime parse=DateTime.parse("2021-05-06");
String s=parse.toString("yyyy-MM-dd");
–参考–
date和calendar
date
joda-time
joda-time时间比较大小
localdate:另一种类似calendar
Joda与date和calendar的比较
Joda与java8新增时间类库的比较
SQL日期处理
四种sql:mysql,sqlserve,pgsql,sparcksql
mysql
sqlserve
格式化日期有两种:
CONVERT :将日期按规定的样式转换后, 存为指定大小的字符串
ps:样式有很多,常用120 是"年-月-日 时:分:秒" ,然后提供控制字符串大小截取部分。
例子:
获取当前时间的第前90天的年-月-日:2021-04-29
select convert ( varchar(10), dateadd ( day, -90, getdate() ),120)
FORMAT :将日期按指定格式转换
ps:相比上一种固定样式,这种更加灵活,也更简单
例子:
获取系统时间,转为到毫秒的格式
select format(SYSDATETIME(),‘yyyy-MM-dd hh:mm:ss fffffff’)
获取季度:DATEPART ( q, getdate())
pgsql
获取年月日:to
sparcksql
–参考–
sqlserve常用日期函数