news 2026/7/21 16:21:47

Java常用 Date 时间格式化、Calender日历、正则表达式的用法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Java常用 Date 时间格式化、Calender日历、正则表达式的用法

目录

一. SimpleDateFormat 日期格式化类

1.1 Date 类型转 String

1.2 String 类型转 Date

二. Calendar 日历类

三. 正则表达式

3.1 正则表达式的组成部分

3.2 手机号正则表达式

3.3 常用密码校验正则表达式


一. SimpleDateFormat 日期格式化类

SimpleDateFormat 是 Java 中用于格式化和解析日期的类。它允许你将日期对象转换为特定格式的字符串,或者将特定格式的字符串转换为日期对象。

1.1 Date 类型转 String

public final format(Date date);

方法传入一个 Date 类型的变量,返回一个字符串;

// 指定要转化成哪种格式的字符串 // 第一种(最常用的一种):年-月-日 时-分-秒格式。 为24小时制,例如下午一点,显示为 13-00-00 SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 第二种: 年-月-日 时-分-秒格式。 为12小时制,例如下午一点,就会显示 01-00-00 SimpleDateFormat simpleDateFormat2 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); // 第三种: 年-月-日 格式。 SimpleDateFormat simpleDateFormat3 = new SimpleDateFormat("yyyy-MM-dd"); // 获取当前时间。 实际开发则从数据库查询获得,或由前端传入获取 Date date = new Date(); // 将当前时间格式化成指定格式的字符串 String formatDate1 = simpleDateFormat1.format(date); System.out.println("yyyy-MM-dd HH:mm:ss 格式转化为字符串:"+ formatDate1); String formatDate2 = simpleDateFormat2.format(date); System.out.println("yyyy-MM-dd hh:mm:ss 格式转化为字符串:"+ formatDate2); String formatDate3 = simpleDateFormat3.format(date); System.out.println("yyyy-MM-dd 格式转化为字符串:"+ formatDate3);

运行代码,如下所示

1.2 String 类型转 Date

public Date parse(String source) throws ParseException;

方法传入一个字符串,返回一个 Date 类型的对象;

// 指定要转化成哪种格式的字符串 // 第一种(最常用的一种):年-月-日 时-分-秒格式。 为24小时制,例如下午一点,显示为 13-00-00 SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 第二种: 年-月-日 时-分-秒格式。 为12小时制,例如下午一点,就会显示 01-00-00 SimpleDateFormat simpleDateFormat2 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); // 第三种: 年-月-日 格式。 SimpleDateFormat simpleDateFormat3 = new SimpleDateFormat("yyyy-MM-dd"); String dateString1 = "2012-12-12 12:12:12"; String dateString2 = "2022-12-12 12:12:12"; String dateString3 = "2032-12-12"; try { Date date1 = simpleDateFormat1.parse(dateString1); Date date2 = simpleDateFormat2.parse(dateString2); Date date3 = simpleDateFormat3.parse(dateString3); System.out.println(date1); System.out.println(date2); System.out.println(date3); } catch (ParseException e) { throw new RuntimeException(e);

运行上述代码,如下所示

二. Calendar 日历类

Calendar 类是 Java 中用于操作日期和时间的抽象类。它提供了一些方法来获取和设置日期和时间,以及进行日期和时间的计算。

(1) getInstance():获取一个表示当前日期和时间的 Calendar 实例;

(2) get(int field):获取指定字段的值。字段可以是 Calendar.YEAR、Calendar.MONTH、Calendar.DAY_OF_MONTH 等;但这里要注意,月份是从0~11,因此当我们要转化成具体的某一个月时,需要+1;

(3) getTime():将Calendar对象转换为Date对象;

(4) setTime(Date date):将Date对象设置为Calendar对象的日期和时间;

Calendar calendar = Calendar.getInstance(); System.out.println("calender 对象:" +calendar.getTime()); // 获取年份 int year = calendar.get(Calendar.YEAR); System.out.println("获取 calender 对象的年份" +year); // 获取月份 int month = calendar.get(Calendar.MONTH); System.out.println("获取 calender 对象的月份,未+1" +month); // 获取日期 int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH); System.out.println("获取 calender 对象的日期" +dayOfMonth); // 打印当前日期和时间,月份进行+1 System.out.println(year + "-" + (month + 1) + "-" + dayOfMonth); // 转化为 date 对象 Date date = calendar.getTime(); System.out.println("转化为 Date 类型对象:"+ date);

运行上述代码如下所示

三. 正则表达式

正则表达式大家都不陌生,虽然对于初学者来说写起来不太简单,但用起来是真的香!

通常都是将正则条件写成一个字符串,然后在去调用 String 字符串类中已经写好的 "matches" 正则方法,方法会返回一个布尔类型的值。

3.1 正则表达式的组成部分

(1)字符类:用于匹配特定类型的字符。例如 [abc] 匹配字符 a,b,c;[a-z] 则表示匹配26个小写字母,[A-Z] 则表示匹配26个大写字母,[0-9] 表示匹配0~9的数字;

(2)量词:用于指定匹配的字符数量。例如 a* 匹配零个或多个,a+ 表示匹配一个或多个,a? 表示匹配零个或一个;

(3)锚点:用于指定匹配的位置。例如 "^"表示匹配的开始,“”

(4)分组:分组用于将多个字符或模式组合在一起。例如(abc)匹配 abc,(abc|def)匹配 abc 或 def。

(5)转义字符:转义字符用于匹配特殊字符。例如 \d 匹配任何数字,\w 匹配任何字母,数字或下划线。

(6)预查:预查用于指定匹配的模式必须满足的条件,但不包括匹配结果中。例如 (?=abc)表示匹配的位置后面必须是 abc。

当然了,上述六个是正则表达式的基本组成部分,还有很多高级的组成部分,包括反向引用,非获取组,注释等。

3.2 手机号正则表达式

想要校验一个手机号是否合法,首先要知道手机号的基本构成。这里扩展一个冷知识。

(1)手机号都是以 "1" 开头,这个大家都知道;

(2)手机号码第二位不可能是 "0","1","2";第三可以是任意数字;后面8位也是随机数字;

(3)中国三大运行商,移动,联通,电信分别运营不同的特有号码片段,正是通过第二位和第三位数字来区分属于哪个运营商的。

代码如下

// ^:表示字符串的开始。 // 1:表示手机号的第一位必须是1。 // [3456789]:表示手机号的第二位必须是3、4、5、6、7、8、9中的一个。 // \\d{9}:表示手机号的后面9位必须是数字。第一个 "\" 表示转义符 // $:表示字符串的结束。 String regex = "^1[3456789]\\d{9}$"; // 现在手机号直接定义一个,实际开发会由前端传给我们 String phoneNumber = "13812345678"; if (phoneNumber.matches(regex)) { System.out.println("手机号格式正确"); } else { System.out.println("手机号格式错误"); }

3.3 常用密码校验正则表达式

密码就没啥可说的了,安全性高一些的网站或者APP,可能会强制要求至少包含一个大小写、数字、特殊字符,且不能含有空格,长度通常为8~16位。

// 至少包含一个大写字母:(?=.*[A-Z]) // 至少包含一个小写字母:(?=.*[a-z]) // 至少包含一个数字:(?=.*\\d) // 至少包含一个特殊字符:(?=.*[!@#$%^&*()_+\\-=\\[\\]{};':"\\|,.<>\\/?]) // 不允许有空格:^[^\\s]+$ // 至少8个字符且不多于16个字符:^.{8,}$ String regex = "^(?=.*[A-Z])(?=.*[a-z])(?=.*\\d)(?=.*[!@#$%^&*()_+\\-=\\[\\]{};':\"\\|,.<>\\/?]).{8,16}$"; String password = "Abc123!@#"; if (password.matches(regex)) { System.out.println("密码符合要求"); } else { System.out.println("密码不符合要求"); }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/21 16:19:54

【小程序毕业设计】基于微信小程序的订餐配送一体化服务平台 外卖订单追踪与商家营收统计管理系统(源码+文档+远程调试,全bao定制等)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/7/21 16:17:41

ASP.NET MVC角色管理实战:从入门到高级应用

1. ASP.NET MVC用户角色管理入门在Web应用开发中&#xff0c;用户角色管理是构建安全系统的基石。ASP.NET MVC框架提供了完善的基于角色的授权机制&#xff0c;让开发者能够轻松实现不同级别的访问控制。想象一下&#xff0c;一个电商平台需要区分普通用户、客服人员和系统管理…

作者头像 李华
网站建设 2026/7/21 16:16:37

如何快速批量修复图片:IOPaint AI修复工具完全指南

如何快速批量修复图片&#xff1a;IOPaint AI修复工具完全指南 【免费下载链接】IOPaint Image inpainting tool powered by SOTA AI Model. Remove any unwanted object, defect, people from your pictures or erase and replace(powered by stable diffusion) any thing on …

作者头像 李华
网站建设 2026/7/21 16:15:57

为什么选择swtpm?揭秘这款开源TPM模拟器的7大优势

为什么选择swtpm&#xff1f;揭秘这款开源TPM模拟器的7大优势 【免费下载链接】swtpm Libtpms-based TPM emulator with socket, character device, and Linux CUSE interface. 项目地址: https://gitcode.com/gh_mirrors/sw/swtpm swtpm是一款基于Libtpms的开源TPM模拟…

作者头像 李华
网站建设 2026/7/21 16:14:51

从体外模型到临床样本:组织原位空间蛋白组学的转化研究价值

医学转化研究的一个重要挑战&#xff0c;是如何在体外模型中观察到的生物学现象与临床样本之间建立可比较、可量化的联系。2025年斯坦福大学团队在Nature Communications发表的研究&#xff0c;围绕这一问题提出了一种基于超多重蛋白成像技术的定量空间分析框架&#xff0c;为从…

作者头像 李华