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("密码不符合要求");
}

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jdk1.8安装及环境配置(最新最详细教学!!!)

jdk1.8安装&#xff1a; 看了网上很多关于jdk1.8的安装&#xff0c;我觉得有时候会让人云里雾里&#xff0c;虽然自己可能配置成功&#xff0c;不过没有一套自己的思路&#xff0c;我结合自己的经验来说一下。 jdk在windows有两种安装方式&#xff0c;一种是解压缩包&#xf…

51c嵌入式~单片机~合集2

我自己的原文哦~ https://blog.51cto.com/whaosoft/12362395 一、不同的电平信号的MCU怎么通信&#xff1f; 下面这个“电平转换”电路&#xff0c;理解后令人心情愉快。电路设计其实也可以很有趣。 先说一说这个电路的用途&#xff1a;当两个MCU在不同的工作电压下工作&a…

httpsok-v1.18.0-SSL证书自动续期

&#x1f525;httpsok-v1.18.0-SSL证书自动续期 介绍 httpsok 是一个便捷的 HTTPS 证书自动续期工具&#xff0c;基于全新的设计理念&#xff0c;专为 Nginx 、OpenResty、Apache 等服务器设计。已服务众多中小企业&#xff0c;稳定、安全、可靠。 一行命令&#xff0c;一分…

Dynamics 365 CRM- 后端

Dynamics 365 CRM 后端插件语法示例 public IPluginExecutionContext context null;//上下文 public IOrganizationServiceFactory serviceFactory null;//组织服务工厂对象 public IOrganizationService service null;//Org服务对象//创建执行上下文 context (IPluginExe…

Linux驱动开发(12):中断子系统–按键中断实验

本章我们以按键为例讲解在驱动程序中如何使用中断&#xff0c; 在学习本章之前建议先回顾一下关于中断相关的裸机部分相关章节&#xff0c; 这里主要介绍在驱动中如何使用中断&#xff0c;对于中断的概念及GIC中断控制器相关内容不再进行讲解。 本章配套源码和设备树插件位于“…

Grafana配置告警规则推送企微机器人服务器资源告警

前提 已经部署Grafana&#xff0c;并且dashboard接入数据 大屏编号地址&#xff1a;Node Exporter Full | Grafana Labs 创建企微机器人 备注&#xff1a;群里若有第三方外部人员不能创建 机器人创建完成&#xff0c;记录下来Webhook地址 Grafana配置告警消息模板 {{ define &…

[WiFi] WiFi安全加密WEP Vs WPA Vs WPA2 Vs WPA3整理

WiFi安全标准时间线 WEP&#xff08;Wired Equivalent Privacy&#xff09; WEP最早于1997年推出&#xff0c;是为了保护无线网络上的数据通信而设计的。当时&#xff0c;Wi-Fi技术还处于起步阶段&#xff0c;人们开始意识到需要一种安全协议来防止未经授权的访问和窃听。WEP被…

使用Keil V6编译 FreeRTOS CMSIS V2版本 ETH + Lwip 编译报错问题解决方式

网上其他人写的都解决不了&#xff0c;要不用的是CMSIS V1版本&#xff0c;根据他们的方式搞完还是报错&#xff0c;今天花点时间自己搞一下。 不想自己动手&#xff1f;没问题&#xff0c;模版已上传Gitee https://gitee.com/maybe_404/stm32-f4xx_-free-rtos_-lwip_-templa…

群控系统服务端开发模式-应用开发-操作记录功能开发

一、开放路由 在根目录下route文件夹下修改app.php文件&#xff0c;代码如下&#xff1a; // 操作日志Route::get(token/get_list,permission.Token/getList);// 获取操作日志列表Route::post(token/get_all,permission.Token/getAll);// 获取操作日志所有数据Route::post(toke…

大模型闯关学习——L1G6000 OpenCompass 评测书生大模型实践

任务要求&#xff1a; 基础任务&#xff1a; 首先创建开发机 进入开发机&#xff1a; 创建测评所需要的环境 conda create -n opencompass python3.10 conda activate opencompass cd /root git clone -b 0.3.3 https://github.com/open-compass/opencompass cd opencompas…

C# 探险之旅:第三十节 - 类型class(继承Inheritance) —— 当“儿子”继承“老爸”的遗产

嘿&#xff0c;探险家们&#xff01;欢迎再次踏上我们的C#奇幻旅程。今天&#xff0c;我们要聊一个既有趣又实用的话题——继承&#xff08;Inheritance&#xff09;&#xff01;想象一下&#xff0c;如果你的“儿子”能够继承“老爸”的遗产&#xff0c;那编程世界里的对象们也…

排序算法(2)——快速排序

目录 1. 实现方式 1.1 霍尔法 ​ 1.2 挖坑法 1.3 前后指针法 2. 复杂度分析 3. 快速排序优化 3.1 三数取中 3.2 小区间使用插入排序 3.3 非递归实现 快速排序是英国计算机科学家托尼・霍尔&#xff08;C. A. R. Hoare&#xff09;在 1960 年年提出的一种二叉树结构的交…

【python】最新版抖音js逆向拿到数据,非常详细教程(附完整代码)

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全…

apollo2.0.0本地调试运行

一、下载源码 https://github.com/apolloconfig/apollo/tree/v2.0.0 二、本地环境 jdk 1.8 mysql 5.7 maven 3.6.3 三、IDEA运行源码 IDEA直接Open打开项目即可 需要依次启动configservice、adminservice、portal三个服务 基于apollo-assembly模块的ApolloApplication…

STP(生成树协议)

STP的基本概念 概述 STP是一个用于局域网中消除环路的协议。运行该协议的设备通过彼此交互信息而发现网络中的环路&#xff0c;并对某些接口进行阻塞以消除环路。STP在网络中运行后会持续监控网络的状态&#xff0c;当网络出现拓扑变更时&#xff0c;STP能够感知并且进行自动…

3D 生成重建039-Edify 3D:Nvidia的3D生成大模型

3D 生成重建039-Edify 3D:Nvidia的3D生成大模型 文章目录 0 论文工作1 论文方法2 实验结果 0 论文工作 文档介绍了Edify 3D&#xff0c;一种为高质量的3D资产生成而设计的高级解决方案。首先在多个视点上合成了所描述对象的RGB和表面法线图像正在使用扩散模型。然后使用多视图…

Maven学习(依赖版本维护、依赖传递、解决Maven依赖冲突的3种方式)

目录 一、Maven的依赖版本维护。 &#xff08;1&#xff09;为什么需要依赖版本维护&#xff1f; &#xff08;2&#xff09;依赖统一管理的具体操作步骤。 第一步。在pom.xml文件中使用标签定义jar包的版本。 第二步。在的对应jar的中使用"${}"引入上面定义好的版本…

CV(4)--边缘提取和相机模型

前言 仅记录学习过程&#xff0c;有问题欢迎讨论 边缘提取&#xff08;涉及语义分割&#xff09;&#xff1a; 图象的边缘是指图象局部区域亮度变化显著的部分,也有正负之分&#xff0c;暗到亮为正 求边缘的幅度&#xff1a;sobel&#xff0c;Canny算子 图像分高频分量和低…

鸿蒙项目云捐助第三讲鸿蒙App应用的启动页实现

鸿蒙项目云捐助第三讲鸿蒙App应用的启动页实现 对于移动端的应用&#xff0c;一般启动app的时候&#xff0c;首先显示启动页&#xff0c;启动页中显示出该应用一些介绍内容&#xff0c;通过这个介绍内容可以了解这个应用具体处理的内容。 进入启动后&#xff0c;通过滑动启动…

flink sink kafka的事务提交现象猜想

现象 查看flink源码时 sink kafka有事务提交机制&#xff0c;查看源码发现是使用两阶段提交策略&#xff0c;而事务提交是checkpoint完成后才执行&#xff0c;那么如果checkpoint设置间隔时间比较长时&#xff0c;事务未提交之前&#xff0c;后端应该消费不到数据&#xff0c…