日期与时间
Date
java.util.Date类表示时间,JDK1.1之后推荐使用 java.util.Calendar类;
java.util.Date类中很多构造方法和方法已经过时(Deprecated),不推荐使用,
|
Calendar
JDK1.1版本开始,增加Calendar类,建议使用Calendar类代替Date类;
Calendar是抽象类,不能直接使用new创建对象;
|
SimpleDateFormat中定义了对时间进行格式化的方法;该类继承了抽象父类DateFormat,某些方法在父类中定义,查阅API文档时注意;
private static void dateToString() { Calendar calendar = Calendar.getInstance();//获取日历对象 calendar.set(Calendar.MONTH, 11); Date date = calendar.getTime();//将日历对象用getTime方法转换成Date对象 //自定义格式 //String pattern="yyyy年MM月dd日 HH时mm分ss秒"; String pattern = "yy-M-d H:m:s"; //构造方法传入格式参数 SimpleDateFormat sdf = new SimpleDateFormat(pattern); String format = sdf.format(date);//使用format格式化 System.out.println(format); //System.out.println(sdf.format(cal.getTime()));//简写 } /*22-12-9 20:4:5*/
yyyy:年 MM:月 dd:日 hh:1~12小时制(1-12) HH:24小时制(0-23) mm:分 ss:秒 S:毫秒 E:星期几 D:一年中的第几天 F:一月中的第几个星期(会把这个月总共过的天数除以7) w:一年中的第几个星期 W:一月中的第几星期(会根据实际情况来算) a:上下午标识 k:和HH差不多,表示一天24小时制(1-24)。 K:和hh差不多,表示一天12小时制(0-11)。 z:表示时区 |
2、解析时间字符串
在实际编程中,往往一些时间内容都是通过用户输入获得,得到的是字符串,需要解析成日期时间类型进行处理;
SimpleDateFormat类不仅能够格式化时间,还能解析时间字符串;
public static void stringToDate() { SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒SSS毫秒"); String strDate = "2001年2月2日 12时20分30秒300毫秒"; try { //parse把字符串转为日期Date类型对象,如果格式不匹配抛出转换异常 System.out.println(sdf.parse(strDate)); //把时间戳存储在数据库中 } catch (ParseException e) { e.printStackTrace(); } } /*Fri Feb 02 12:20:30 CST 2001 981087630300*/
import java.time.LocalDate; public class LocalDateTest { public static void main(String[] args) { System.out.println("-----获取LocalDate对象-----"); //now() 获取当前日期的LocalDate对象 LocalDate now=LocalDate.now(); System.out.println(now); //of() 使用年月日数值生成LocalDate对象 LocalDate localDate=LocalDate.of(2001,2,2); System.out.println(localDate); System.out.println("----------get-----------"); System.out.println(localDate.getDayOfMonth()); System.out.println(localDate.getDayOfWeek()); System.out.println(localDate.getDayOfYear()); System.out.println(now.getMonthValue()); System.out.println(now.getMonth()); System.out.println("----------parse--------"); //parse将字符串转换成LocalDate对象 String strLocalDate="2001-02-02"; LocalDate myLocalDate=LocalDate.parse(strLocalDate); System.out.println(myLocalDate); } }
4、LocalTime
LocalDate类只表示日期,JDK8中定义了新类LocalTime用来表示时间
import java.time.LocalTime; import java.time.temporal.ChronoField; /** * ChronoField是java8提供的一个枚举类 * 里面定义了很多表示日历的字段 * 提供基于字段的访问来操纵日期,时间或日期时间, * 通过实现TemporalField来扩展标准字段集 */ public class LocalTimeTest { public static void main(String[] args) { System.out.println("---获取LocalTime对象---"); //now() 用当前日期生成LocalTime LocalTime now = LocalTime.now(); System.out.println(now); //of() 使用指定数字生成LocalTime LocalTime of = LocalTime.of(11, 2, 35, 231); System.out.println(of); System.out.println("------返回各字段值------"); System.out.println(now.getHour()); System.out.println(now.getMinute()); System.out.println(now.getSecond()); System.out.println(now.get(ChronoField.HOUR_OF_DAY));//在标准的24小时数字时钟上观察到的小时 System.out.println(now.get(ChronoField.MINUTE_OF_HOUR)); System.out.println(now.get(ChronoField.SECOND_OF_MINUTE)); System.out.println("----------parse--------"); //parse,参数格式 HH:mm:ss 将字符串转换成LocalTime对象 LocalTime parseLocalTime = LocalTime.parse("12:02:38"); System.out.println(parseLocalTime); } }
5、LocalDateTime
LocalDateTime类,同时包含日期与时间
import java.time.LocalDateTime; public class LocalDateTimeTest { public static void main(String[] args) { System.out.println("---获取LocalDateTime对象---"); //now() 当前日期 LocalDateTime now=LocalDateTime.now(); System.out.println(now); //of() 指定数字 年月日时分秒 LocalDateTime of=LocalDateTime.of(2001,4,25,14,23,45); System.out.println(of); System.out.println(now.getDayOfMonth()); System.out.println(now.getHour()); //parse默认格式:yyyy-MM-ddTHH:mm:ss LocalDateTime parse=LocalDateTime.parse("2001-02-02T12:34:23"); System.out.println(parse); } }
6、DateTimeFormatter
对于格式化及解析
//ofPattern静态方法获取DateTimeFormatter对象 DateTimeFormatter dtf=DateTimeFormatter.ofPattern("yyyy年MM月dd日HH时mm分ss秒"); //获取localDateTime对象 LocalDateTime now=LocalDateTime.now(); //LocalDate now =LocalDate.now();//只表示日期没有时间,不匹配 //把LocalDateTime LocalDate LocalTime 按照指定格式转换成字符串 //DateTimeFormatter格式要与format参数一致 String format=dtf.format(now); System.out.println(format); /*2022年04月10日15时42分52秒*/
7、LocalDate、LocalTime、LocalDateTime
- 使用DateTimeFormatter对象进行格式化
- 使用DateTimeFormatter对象把字符串按照指定的格式转换成时间日期类型对象
-
String pattern1="yyyy/MM/dd"; DateTimeFormatter dtf1=DateTimeFormatter.ofPattern(pattern1); TemporalAccessor parse = LocalDate.parse("2001/02/02",dtf1); System.out.println(parse); String pattern2="yyyy/MM/dd HH:mm:ss"; DateTimeFormatter dtf2 = DateTimeFormatter.ofPattern(pattern2); LocalDateTime localDateTime=LocalDateTime.parse("2002/04/02 14:23:34",dtf2); System.out.println(localDateTime); String pattern3="HH:mm:ss"; DateTimeFormatter dtf3 = DateTimeFormatter.ofPattern(pattern3); LocalTime localTime=LocalTime.parse("14:23:34",dtf3); System.out.println(localTime);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了