一、java中时间类型转化
1、String转为Date
在java中写以下方法:
运行后得到的输出为:
Sun Mar 18 15:24:37 CST 2018
2、Date转为String
在java中写以下方法
得到的输出结果为:2018-03-17 16:01:13
在String和Date互相转化中需要注意的是:
(1)在java的基本类型中,没有Date类型,Date是java中的一个封装类,所以获取当前时间我们需要用Date date=new Date()来获取。
(2)SimpleDateFormat是一个以国别敏感的方式格式化和分析数据的具体类。它允许格式化 (date -> text)、语法分析 (text -> date)和标准化。
(3)在new SimpleDateFormat后的括号中我们可以输入任意我们想要得到的时间格式,例如"yyyy-M-dd","yyyy-M-d H:m:s"等。其中yyyy代表的是年份,MM为月份,dd为当月几号,其中MM为月需大写、因为它需要和分区分开。而HH大写则表示24小时制,如果是小写的hh则表示12小时制。HH:mm:ss和H:m:s的区分在于是否有前导零。例如5时4分8秒,HH:mm:ss则显示为05:04:08,而H:m:s则显示为5:4:8。
3、String和Timestamp的转化
写如下方法
得到结果为:2017-09-24 17:29:35.0
4、Timestamp和String的转化
得到的结果为2018/03/17 17:13:43
在String和Timestamp互相转化中需要注意的是:
(1)System.currentTimeMillis()获得的时间是自1970-01-01 00:00:00.000到当前时刻的时间距离,类型为long
(2)因为Timestamp为long类型,所以在转为String的时候也可以直接toString()。在上例中为trString=ts.toString();
5、Timestamp转为Date以及Date转为Timestamp
这两个类型不能直接转换,需要利用中间值String类型来转换,具体实现方法可以参照以上4个例子中的方法,结合起来即可。
二、java根据已知日期查询所需日期
这里需要介绍一个java中的类Calendar:
在java中Calendar是一个抽象类,专门对日期来进行操作,不能通过new对象来获取实例。所以,Calendar提供了一个类方法为getInstance,Calendar date=Calendar.getInstance()会返回一个Calendar子类对象。
基本用法:
Calendar calendar = Calendar.getInstance();
获取年 calendar.get(Calendar.YEAR);
获取月 month = calendar.get(Calendar.MONTH) + 1;(月份是从0开始算的)
获取日 day = calendar.get(Calendar.DAY_OF_MONTH);
获取时 hour = calendar.get(Calendar.HOUR);
获取分 minute = calendar.get(Calendar.MINUTE);
获取秒 second = calendar.get(Calendar.SECOND);
获取星期 int weekday = calendar.get(Calendar.DAY_OF_WEEK);(每周是从周日开始算的)
下面举几个例子:
1、根据已知日期查询昨天日期
得到的结果为:2018-03-16
其中setTime中类型必须为Date,prelastDayCal.add(Calendar.DAY_OF_MONTH, -1)表示获取时间减一天。
2、根据已知日期查询上周的周一到周天
得到结果为2018-03-05 2018-03-11
cal.get(Calendar.DAY_OF_WEEK)是为了获得当前日期是一个星期的第几天 。因为每周是从周日开始算的,所以获得周一需要加一天,同理,获取周六需要减5天。
3、根据已经月份查询上个月
得到的结果为2018-2