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

目录

1. SimpleDateFormat 日期格式化类

1.1 Date 类型转 String

1.2 String 类型转 Date

2. Calendar 日历类

3. 正则表达式

3.1 正则表达式的组成部分

3.2 手机号正则表达式

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


1. 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);

运行上述代码,如下所示

2. 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);

运行上述代码如下所示

3. 正则表达式

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

通常都是将正则条件写成一个字符串,然后在去调用 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("密码不符合要求");
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/935602.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MySQL其四,各种函数,以及模拟了炸裂函数创建用户等操作

目录 一、MySQL中的函数 1、IFNULL 2、IF 3、case &#xff08;难点&#xff09; 4、exists(难) --存在的意思 二、常见的函数 1、字符串函数 2、数学函数 3、日期函数 &#xff08;使用频率不是很高&#xff09; 4、其他函数 5、关于字符集的问题 6、mysql炸裂函数…

USB-TypeC接口设计

USB-TypeC介绍 一个全的TypeC接口一共有24个引脚,分别是A1~A12和B1~B12,并且是左右镜像对称支持正反插,TypeC向下兼容USB2.0不需要USB3.0的信号时,TypeC可以进一步简化成12pin如下图所示,因此TypeC的种类是比较多的。 USB3.2和USB4包括之后的USB的接口都是…

Dual-Write Problem 双写问题(微服务)

原文链接https://www.confluent.io/blog/dual-write-problem/ 双写问题发生于当两个外部系统必须以原子的方式更新时。 问题 说有人到银行存了一笔钱&#xff0c;触发 DepositFunds 命令&#xff0c;DepositFunds 命令被发送到Account microservice。 Account microservice需…

短信验证码burp姿势

首先声明&#xff0c;本文仅仅作为学习使用&#xff0c;因个人原因导致的后果&#xff0c;皆有个人承担&#xff0c;本人没有任何责任。 在之前的burp学习中&#xff0c;我们学习了图片验证码的突破&#xff0c;但是现实中还有很多短信验证码&#xff0c;在此我介绍几种短信验…

2024 X-GAME 上海智能新能源汽车大数据竞赛决赛顺利举行,和鲸Heywhale连续五年助推新能源汽车产业发展

11月22日&#xff0c;第七届 X-GAME 上海智能新能源汽车大数据竞赛圆满落幕&#xff01;这是和鲸作为协办方第五年为 X-GAME 新能源汽车分析赛道提供全程支持&#xff0c;赋能新能源汽车的产业发展。自 2018 年首次举办以来&#xff0c;以“数联万物&#xff0c;车载未来”为主…

Referer头部在网站反爬虫技术中的运用

网站数据的安全性和完整性至关重要。爬虫技术&#xff0c;虽然在数据收集和分析中发挥着重要作用&#xff0c;但也给网站管理员带来了挑战。为了保护网站数据不被恶意爬取&#xff0c;反爬虫技术应运而生。本文将探讨HTTP头部中的Referer字段在反爬虫技术中的应用&#xff0c;并…

【ubuntu】将Chroma配置为LINUX服务

Chroma是一个轻量级向量数据库。既然是数据库&#xff0c;那么我希望它是能够长时间运行。最直接的方式是配置为service服务。 可惜官方没有去提供配置为服务的办法&#xff0c;而鄙人对docker又不是特别感冒。所以自己研究了下chroma配置为服务的方式。 系统&#xff1a;ubu…

jenkins harbor安装

Harbor是一个企业级Docker镜像仓库‌。 文章目录 1. 什么是Docker私有仓库2. Docker有哪些私有仓库3. Harbor简介4. Harbor安装 1. 什么是Docker私有仓库 Docker私有仓库是用于存储和管理Docker镜像的私有存储库。Docker默认会有一个公共的仓库Docker Hub&#xff0c;而与Dock…

vscode 打开 setting.json

按下Ctrl Shift P&#xff08;Windows/Linux&#xff09;或Cmd Shift P&#xff08;Mac&#xff09;来打开命令面板。输入open settings&#xff0c;然后选择 Open User Settings(JSON)。打开settings.json文件 ------修改设置-----&#xff1a; 1、 html代码的行长度&am…

在conda终端运行Jupyter Notebook

文章目录 创建并激活环境安装并匹配ipykernel打开Jupyter Notebook 创建并激活环境 在Anaconda Prompt中输入conda create --name OpenAI来创建新的环境&#xff0c;其中OpenAI为新环境的名字 如果不需要创建新的环境&#xff0c;则直接激活已有环境。输入conda activate Open…

【机器学习算法】——决策树:CART

文章目录 理论sklearn 库实现完整代码 理论 CART全称叫Classification and Regression Tree&#xff0c;即分类与回归树。CART假设决策树是二叉树&#xff0c;内部结点特征的取值只有“是”和“否”&#xff0c;左分支是取值为“是”的分支&#xff0c;有分支则相反。这样的决…

Pytest-Bdd-Playwright 系列教程(15):背景(Background)

Pytest-Bdd-Playwright 系列教程&#xff08;15&#xff09;&#xff1a;背景&#xff08;Background&#xff09; 前言一、什么是背景&#xff08;Background&#xff09;二、特性文件三、测试脚本四、运行测试总结 前言 在测试的过程中&#xff0c;我们往往会遇到这样的问题&…

【精】Linux虚拟机 Docker 配置阿里云镜像加速

一、前言 1.1 拉取镜像报错 当 Docker 客户端拉取镜像时报错&#xff0c;类似如下&#xff1a; Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while 报错解释&#xff1a; 这个错误表明 Docker 客户端尝试与 …

计算机视觉与各个学科融合:探索新方向

目录 引言计算机视觉与其他学科的结合 与医学的结合与机械工程的结合与土木工程的结合与艺术与人文的结合发文的好处博雅知航的辅导服务 引言 计算机视觉作为人工智能领域的重要分支&#xff0c;正迅速发展并渗透到多个学科。通过与其他领域的结合&#xff0c;计算机视觉不仅…

vue3 使用 vue-ueditor-wrap 集成135以及秀米编辑器(亲测可用)!

1.先安装vue-ueditor-wrap富文本组件 # vue-ueditor-wrap v3 仅支持 Vue 3 npm i vue-ueditor-wrap3.x -S # or yarn add vue-ueditor-wrap3.x 2. 下载 UEditor UEditor 并不支持通过 npm 的方式来安装&#xff0c;vue-ueditor-wrap 也只是一个 Vue 组件&#xff0c;组件本身…

Redis 生产问题(重要)

缓存穿透 什么是缓存穿透&#xff1f; 缓存穿透说简单点就是大量请求的 key 是不合理的&#xff0c;根本不存在于缓存中&#xff0c;也不存在于数据库中 。这就导致这些请求直接到了数据库上&#xff0c;根本没有经过缓存这一层&#xff0c;对数据库造成了巨大的压力&#xf…

【问题记录】07 MAC电脑,使用FileZilla(SFTP)连接堡垒机不成功

项目场景&#xff1a; 使用MAC电脑&#xff0c;以子账号&#xff08;非root&#xff09;的形式登录&#xff0c;连接堡垒机CLB&#xff08;传统型负载均衡&#xff09;&#xff0c;使用FileZilla&#xff08;SFTP&#xff09;进行FTP文件传输。 问题描述&#xff1a; MAC电脑…

Pull requests 和Merge Request其实是一个意思

Pull requests的定义 在Git中&#xff0c;PR&#xff08;Pull Request&#xff09;是一种协作开发的常用方式。它允许开发者将自己的代码变更&#xff08;通常是一个分支&#xff09;提交到项目的仓库中&#xff0c;然后请求负责代码审查的人员将这些变更合并到主分支中。通过…

NGUI笔记

Rect tool不显示长方形框 原因&#xff1a;没开Gizmos。UGUI不开Gizmos也有Rect tool长方形框。 Game窗口看不见控件 原因&#xff1a;相机Culling Mask选了Nothing 配置九宫格 Scroll bar 滑动条的框应该填满背景。 Localize脚本无效 Tween 按下时播放动画&#xff0c;松开…

挺详细的记录electron【V 33.2.0】打包vue3项目为可执行程序

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言 一、直接看效果 二、具体步骤 1.安装配置electron 1.将 electron 包安装到应用的开发依赖中。 2.安装electron-packager依赖&#xff08;打包可执行文件&#…