【前端学java】java中的日期操作(12)
往期回顾:
- 【前端学java】JAVA开发的依赖安装与环境配置 (0)
- 【前端学 java】java的基础语法(1)
- 【前端学java】JAVA中的packge与import(2)
- 【前端学java】面向对象编程基础-类的使用 (3)
- 【前端学java】类中的访问权限详解,通俗易懂(4)
- 【前端学java】java中final修饰符(5)
- 【前端学java】全网最通俗易懂的JAVA抽象概念(6)
- 【前端学java】Java中的接口和枚举概念(7)
- 【前端学java】java中的Object类(8)
- 【前端学java】java 中的数组(9)
- 【前端学java】java中的字符串操作(10)
- 【前端学java】java中的包装类(11)
前端中的new Date()
在前端中,使用原生js操作日期使用new Date() 这个构造函数。比如,我们获取时间戳
let time = new Date().getTime()
console.log(time) // 1697531070333
我们简单复习一下js中一些常用的时间操作
getDate(): 返回日期对象中的日(从 1 到 31)。
getDay(): 返回日期对象中的星期几(从 0 到 6,0 表示星期日)。
getFullYear(): 返回日期对象中的四位年份。
getHours(): 返回日期对象中的小时(从 0 到 23)。
getMinutes(): 返回日期对象中的分钟(从 0 到 59)。
getSeconds(): 返回日期对象中的秒数(从 0 到 59)。
getTime(): 返回日期对象的毫秒表示,自1970年1月1日00:00:00 UTC起。
getMonth(): 返回日期对象中的月份(从 0 到 11,0 表示一月)。
setDate(day): 设置日期对象中的日。
setFullYear(year, month, day): 设置日期对象中的年份、月份和日。
setHours(hour, min, sec, millisec): 设置日期对象中的小时、分钟、秒和毫秒。
setMinutes(min, sec, millisec): 设置日期对象中的分钟、秒和毫秒。
setSeconds(sec, millisec): 设置日期对象中的秒和毫秒。
setTime(millisec): 以毫秒为单位设置日期对象。
setMonth(month, day): 设置日期对象中的月份和日。
java中的日期操作是怎么样的呢?
java中的日期操作
日期类、日历类及LocalDate类
在java中,也有一些列操作时间的方法,比如,在Java中,打印时间戳我们可以用System. currentTimeMillis方法。
public class Date {public static void main(String[] args) {// Date :日期类System.out.println(System.currentTimeMillis()); // 1697530889457}
}
System.currentTimeMillis返回以毫秒为单位的当前时间,即从1970年1月1日午夜开始到现在的时间差,结果以毫秒为单位表示。
java中的日期操作主要通过日期类(Date) 和日历类(Calendar)及 LocalDate类,每个类都有其优点和缺点。
- Date类:Java中的基础日期类,包含日期和时间的信息。但是,它的API不太直观,使用起来不太方便。此外,它也不支持时区,这使得它的使用有些受限。
- Calendar类:这个类提供了一个更抽象的日期和时间表示。它允许您更轻松地处理像时区,一年中的月份天数差异,闰年等复杂的问题。然而,它的API同样复杂,而且有些方法已经被标记为已过时。
- LocalDate类:这是Java 8引入的一个新的日期类。它只包含日期的信息,不包含时间。这个类使用起来比Date和Calendar更直观,更易用。此外,它还支持时区,这使得它能够更好地处理不同时区之间的日期和时间转换。如果您不需要处理时间,而且想使用一个现代,易用的API,那么LocalDate可能是一个好选择。
日期类
日期类是通过new Date()声明的类,我们在编译器输入new Date()时,会发现有java.util.Date和java.sql.Date。

java.util.Date和java.sql.Date都是Java中用于表示日期的类,与数据库交互,可以使用java.sql.Date,业务代码开发中,我们自然使用java.util.Date
new Date()的返回值
import java.util.Date;public class DateStudy {public static void main(String[] args) {Date d = new Date();System.out.println(d); // Tue Oct 17 16:52:41 CST 2023}
}
new Date() 的返回值是一个 java.util.Date 对象,其包含创建时的年、月、日、小时、分钟、秒和毫秒等信息。
日期格式化SimpleDateFormat
前端中日期格式化,我们经常会使用第三方插件如dayjs或者momentjs。
let time = new Date().format("YYYY-MM-DD HH:mm:ss")
consloe.log(time) // 2023-10-17 23:59:59
在java中,我们借助SimpleDateFormat类就可以快速实现日期的格式化,而不用引入额外东西。
import java.text.SimpleDateFormat;
import java.util.Date;public class DateStudy {public static void main(String[] args) {// 创建一个 Date 对象Date d = new Date();// 创建一个 SimpleDateFormat 对象,指定日期格式SimpleDateFormat formatter = new SimpleDateFormat("YYYY-MM-dd");// 使用 SimpleDateFormat 对象格式化日期String time = formatter.format(d);System.out.println(time); // 2023-10-17}
}
日期字符含义
- y:年份。可以使用一位或四位表示,如“y”表示“2023”,“yyyy”表示“2023”。
- M:月份。可以使用一位或两位表示,如“M”表示3月,“MM”表示“03”。
- d:日期。可以使用一位或两位表示,如“d”表示8日,“dd”表示“08”。
- H:小时(24小时制)。可以使用一位或两位表示,如“H”表示8点,“HH”表示“08”。
- m:分钟。可以使用一位或两位表示,如“m”表示5分,“mm”表示“05”。
- s:秒。可以使用一位或两位表示,如“s”表示6秒,“ss”表示“06”。
注意,java中的DD和前端中的DD含义不同。在java中,DD表示一年中的日期而不是一个月中的日期。
// 创建一个 SimpleDateFormat 对象,指定日期格式SimpleDateFormat formatter = new SimpleDateFormat("YYYY-MM-DD");// 使用 SimpleDateFormat 对象格式化日期String time = formatter.format(d);System.out.println(time); // 2023-10-290
上述打印机结果中的290就是指的本年的第290天。
其他常用方法
Java中日期类的常用方法有很多,我们目前不用过多学习,大致了解即可。
getTime()
返回自1970年1月1日00:00:00 GMT以来的毫秒数。
Date d = new Date();
System.out.println(d.getTime()); // 1697535905242
before、after
比较两个日期的先后顺序。

注:new Date这种传参方式已经不被推荐,建议使用日历类操作了。
其他的不在列出。
日历类
java.util.Calendar类的常用方法包括:getTime()、setTime()、add()、get()、set()等。
我们来简单熟悉一下这些方法。
getTime
getTime()方法被用来检索此日历的日期和时间,通常以java.util.Date对象的形式返回。
import java.util.Calendar;
import java.util.Date;public class DateStudy {public static void main(String[] args) {// 创建一个Calendar对象Calendar calendar = Calendar.getInstance();System.out.println(calendar.getTime()); // Tue Oct 17 18:10:12 CST 2023}
}
注意:创建日历对象的方式和创建日期对象的方式是有区别的!!
setTime
setTime()方法被用来设置此日历的日期和时间,Calendar.setTime 方法可以接受一个 Date 或 long 类型的时间参数,通常以java.util.Date对象的形式提供。
以 java.util.Date 对象的形式提供
public class DateStudy {public static void main(String[] args) {// 创建一个Calendar对象Calendar calendar = Calendar.getInstance();// 创建一个自定义时间的Date对象 Date customTime = new Date(2023,12,1);// 用自定义时间的Date对象设置Calendar的时间 calendar.setTime(customTime);System.out.println(calendar.getTime()); //Tue Jan 01 00:00:00 CST 3924}
}
long 类型入参
public class DateStudy {public static void main(String[] args) {// 创建一个Calendar对象Calendar calendar = Calendar.getInstance();// 定义一个long类型的时间参数,从2000毫秒后开始long time = System.currentTimeMillis() + 2000;// 用long类型的时间参数设置Calendar的时间calendar.setTimeInMillis(time);System.out.println(calendar.getTime()); // Tue Oct 17 18:24:09 CST 2023}
}
注:不同入参,设置时间时用不同方法

add
add方法用于在指定的时间字段中添加(或减少)指定的值。
注意:
add方法的第一个参数是要修改的时间字段,Calendar提供一些默认的枚举值;例如,Calendar.DAY_OF_YEAR意味着你要修改年中的日期,Calendar.MONTH意味着你要修改月份,以此类推。
第二个参数是你要添加(或减少)的值。
set
日历类的set方法用于设置日历的各个字段,例如年、月、日、小时和分钟。
public class DateStudy {public static void main(String[] args) {// 创建一个Calendar对象Calendar calendar = Calendar.getInstance();// 设置日历的年份int year = 2023;calendar.set(Calendar.YEAR, year);// 设置日历的月份int month = 10;calendar.set(Calendar.MONTH, month - 1); // 注意,月份是从0开始的,所以要减1// 设置日历的日期int day = 23;calendar.set(Calendar.DAY_OF_MONTH, day);// 设置日历的小时和分钟int hours = 23;int minutes = 59;calendar.set(Calendar.HOUR_OF_DAY, hours);calendar.set(Calendar.MINUTE, minutes);// 输出设置后的日历时间System.out.println("设置后的日历时间为: " + calendar.getTime());// 设置后的日历时间为: Mon Oct 23 23:59:28 CST 2023}
}
LocalDate类
LocalDate类是Java 8引入的一个日期类,它表示一个特定的日期,包括年、月和日,但不包括时间。这个类提供了一系列的方法来操作和处理日期,如获取当前日期、增加或减少日期、比较日期等等。
实际上,java8还引入了其他和时间有关的类
- LocalDate:用于表示一个日期,包括年、月和日,但不包括时间和时区信息。
- LocalDateTime:用于表示一个日期和时间,包括年、月、日、小时、分钟、秒和毫秒,不包括时区信息。
- ZonedDateTime:用于表示一个日期和时间,包括年、月、日、小时、分钟、秒和毫秒,以及时区信息。
这三个类都位于java.time包中,它们的设计旨在替换Java 8之前的Date和Calendar类,并提供更完善、更一致和更易于使用的日期和时间API。(ps:妈的,全是学习成本)
相关文章:
【前端学java】java中的日期操作(12)
往期回顾: 【前端学java】JAVA开发的依赖安装与环境配置 (0)【前端学 java】java的基础语法(1)【前端学java】JAVA中的packge与import(2)【前端学java】面向对象编程基础-类的使用 (…...
用eclipse搭建简单的JavaWeb环境
在 Eclipse 中搭建 JavaWeb 项目的环境涉及到配置服务器、创建项目、添加库等步骤。以下是基于 Eclipse 的 JavaWeb 项目搭建的简要步骤: 步骤: 1. 安装 Eclipse IDE for Java EE Developers 确保你已经安装了 Eclipse IDE for Java EE Developers 版…...
【精选】改进的YOLOv5:红外遥感图像微型目标的高效识别系统
1.研究背景与意义 随着科技的不断发展,红外遥感技术在军事、安防、环境监测等领域中得到了广泛应用。红外遥感图像具有独特的优势,可以在夜间或恶劣天气条件下获取目标信息,因此在小目标检测方面具有重要的应用价值。然而,由于红…...
HarmonyOS ArkTS语言,运行Hello World(一)
一、下载与安装DevEco Studio 在HarmonyOS应用开发学习之前,需要进行一些准备工作,首先需要完成开发工具DevEco Studio的下载与安装以及环境配置。 进入DevEco Studio下载官网,单击“立即下载”进入下载页面。 DevEco Studio提供了Windows…...
IDEA中注释快捷键及模板
单行注释 将光标放置于要注释所在行,使用 Ctrl /, 添加行注释,再次使用,去掉行注释 若需要将多行进行单行注释,只需要选中要注释的多行,然后使用 Ctrl /, 添加行注释,再次使用&a…...
centos7系统下postgresql15离线安装,卸载
1. 创建postgres用户 #[rootVMTest postgresql16]# useradd -g postgres postgres [rootVMTest postgresql16]# useradd postgres 插曲:在线YUM安装 在线安装参考: PostgreSQL: Linux downloads (Red Hat family) 2. 下载并安装离线rpm包 2.1 从postgresql官网下…...
C#线程 ConcurrentQueue安全队列介绍
https://blog.csdn.net/qq_41230604/article/details/126305068 C#线程安全队列ConcurrentQueue ConcurrentQueue队列是一个高效的线程安全的队列,是Net Framework 4.0,System.Collections.Concurrent命名空间下的一个数据结构。 ConcurrentQueue内部结…...
CURL踩坑记录
因为项目使用的windows server,且没有安装Postman,所以对于在本地的Postman上执行的请求,要拷贝到服务器执行,只能先转化成为curl命令,操作也很简单,如下: 注意,Postman默认对url包围…...
Python 自动化(十八)admin后台管理
admin后台管理 什么是admin后台管理 django提供了比较完善的后台数据库的接口,可供开发过程中调用和测试使用 django会搜集所有已注册的模型类,为这些模型类提供数据管理界面,供开发使用 admin配置步骤 创建后台管理账号 该账号为管理后…...
Navicat 技术指引 | 适用于 GaussDB 的自动运行功能
Navicat Premium(16.2.8 Windows版或以上) 已支持对 GaussDB 主备版的管理和开发功能。它不仅具备轻松、便捷的可视化数据查看和编辑功能,还提供强大的高阶功能(如模型、结构同步、协同合作、数据迁移等),这…...
MySQL 的执行原理(四)
5.5. MySQL 的查询重写规则 对于一些执行起来十分耗费性能的语句,MySQL 还是依据一些规则,竭尽全力的把这个很糟糕的语句转换成某种可以比较高效执行的形式,这个过程也可以 被称作查询重写。 5.5.1. 条件化简 我们编写的查询语句的搜索条件…...
PHP 正则式 全能匹配URL(UBB)
PHP 正则式 全能匹配URL(UBB) 语言:PHP 注明:正则式 无语言限制(js、PHP、JSP、ASP、VB、.net、C#...)一切皆可。 简介:PHP UBB 正则式 全能匹配URL 自动加超级链接。网上找了很多都不匹配或…...
hadoop shell操作 hdfs处理文件命令 hdfs上传命令 hadoop fs -put命令hadoop fs相关命令 hadoop(十三)
hadoop fs -help rm 查看rm命令作用 hadoop fs 查看命令 1. 创建文件夹: # hdfs前缀也是可以的。更推荐hadoop hadoop fs -mkdir /sanguo 2.上传至hdfs命令: 作用: 从本地上传hdfs系统 (本地文件被剪切走,不存在了&…...
redis-cluster集群
1.redis-cluster集群 redis3.0引入的分布式存储方案 集群由多个node节点组成,redis数据分布在这些节点之中。 在集群之中分为主节点和从节点 集群模式当中,主从一一对应,数据写入和读取与主从模式一样,主负责写,从…...
Hfish安全蜜罐部署
一、Hfish蜜罐介绍 HFish蜜罐官网 HFish是一款社区型免费蜜罐,侧重企业安全场景,从内网失陷检测、外网威胁感知、威胁情报生产三个场景出发,为用户提供可独立操作且实用的功能,通过安全、敏捷、可靠的中低交互蜜罐增加用户在失陷…...
Apache POI(Java)
一、Apache POI介绍 Apache POI是Apache组织提供的开源的工具包(jar包)。大多数中小规模的应用程序开发主要依赖于Apache POI(HSSF XSSF)。它支持Excel 库的所有基本功能; 文本的导入和导出是它的主要特点。 我们可以使用 POI 在…...
P8599 [蓝桥杯 2013 省 B] 带分数(dfs+全排列+断点判断)
思路:1.深度枚举所有排列情况 2.设置为每个排列设置两个断点,分为三部分:a,b,c 3.转换为乘法判断条件,满足加一 代码如下:(可用next_permutation全排列函数代替dfs) #include<iostream>…...
PS右边的图层窗口没有显示出来?
问题描述:PS右边的图层窗口没有显示出来? 解决步骤: 键盘F7快捷键即可调出来。...
Sealos 云操作系统私有化部署教程
Sealos 私有云已经正式发布了,它为企业用云提供了一种革命性的新方案。Sealos 的核心优势在于,它允许企业在自己的机房中一键构建一个功能与 Sealos 公有云完全相同的私有云。这意味着企业可以在自己的控制和安全范围内,享受到公有云所提供的…...
信息系统的安全保护等级的五个级别
信息系统的安全保护等级分为五级:第一级为自主保护级、第二级为指导保护级、第三级为监督保护级、第四级为强制保护级、第五级为专控保护级。 法律依据:《信息安全等级保护管理办法》第四条 信息系统的安全保护等级分为以下五级: &#…...
OpenLayers 可视化之热力图
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 热力图(Heatmap)又叫热点图,是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...
ES6从入门到精通:前言
ES6简介 ES6(ECMAScript 2015)是JavaScript语言的重大更新,引入了许多新特性,包括语法糖、新数据类型、模块化支持等,显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var…...
线程与协程
1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指:像函数调用/返回一样轻量地完成任务切换。 举例说明: 当你在程序中写一个函数调用: funcA() 然后 funcA 执行完后返回&…...
什么是库存周转?如何用进销存系统提高库存周转率?
你可能听说过这样一句话: “利润不是赚出来的,是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业,很多企业看着销售不错,账上却没钱、利润也不见了,一翻库存才发现: 一堆卖不动的旧货…...
《通信之道——从微积分到 5G》读书总结
第1章 绪 论 1.1 这是一本什么样的书 通信技术,说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号(调制) 把信息从信号中抽取出来&am…...
NFT模式:数字资产确权与链游经济系统构建
NFT模式:数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新:构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议:基于LayerZero协议实现以太坊、Solana等公链资产互通,通过零知…...
JDK 17 新特性
#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持,不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的ÿ…...
视觉slam十四讲实践部分记录——ch2、ch3
ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...
IP如何挑?2025年海外专线IP如何购买?
你花了时间和预算买了IP,结果IP质量不佳,项目效率低下不说,还可能带来莫名的网络问题,是不是太闹心了?尤其是在面对海外专线IP时,到底怎么才能买到适合自己的呢?所以,挑IP绝对是个技…...
音视频——I2S 协议详解
I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议,专门用于在数字音频设备之间传输数字音频数据。它由飞利浦(Philips)公司开发,以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...
