【前端学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(): 返回日期对象中的日(从 131)。
getDay(): 返回日期对象中的星期几(从 060 表示星期日)。
getFullYear(): 返回日期对象中的四位年份。
getHours(): 返回日期对象中的小时(从 023)。
getMinutes(): 返回日期对象中的分钟(从 059)。
getSeconds(): 返回日期对象中的秒数(从 059)。
getTime(): 返回日期对象的毫秒表示,自19701100:00:00 UTC起。
getMonth(): 返回日期对象中的月份(从 0110 表示一月)。
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类,每个类都有其优点和缺点。

  1. Date类:Java中的基础日期类,包含日期时间的信息。但是,它的API不太直观,使用起来不太方便。此外,它也不支持时区,这使得它的使用有些受限。
  2. Calendar类:这个类提供了一个更抽象的日期和时间表示。它允许您更轻松地处理像时区,一年中的月份天数差异,闰年等复杂的问题。然而,它的API同样复杂,而且有些方法已经被标记为已过时。
  3. 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还引入了其他和时间有关的类

  1. LocalDate:用于表示一个日期,包括年、月和日,但不包括时间时区信息
  2. LocalDateTime:用于表示一个日期和时间,包括年、月、日、小时、分钟、秒和毫秒,不包括时区信息。
  3. ZonedDateTime:用于表示一个日期和时间,包括年、月、日、小时、分钟、秒和毫秒,以及时区信息。

这三个类都位于java.time包中,它们的设计旨在替换Java 8之前的Date和Calendar类,并提供更完善、更一致和更易于使用的日期和时间API。(ps:妈的,全是学习成本)

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

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

相关文章

使用Python的turtle模块绘制玫瑰花图案(含详细Python代码与注释)

1.1引言 turtle模块是Python的标准库之一,它提供了一个绘图板,让我们可以在屏幕上绘制各种图形。通过使用turtle,我们可以创建花朵、叶子、复杂的图案等等。本博客将介绍如何使用turtle模块实现绘制图形的过程,并展示最终结果。 …

创建一个用户test且使用testtab表空间及testtemp临时表空间并授予其权限,密码随意

文章目录 1、连接到数据库2、创建表空间3、创建用户4、授予权限5、测试 1、连接到数据库 sqlplus / as sysdba2、创建表空间 创建testtab表空间 CREATE TABLESPACE testtab DATAFILE /u01/app/oracle/oradata/orcl/testtab.dbf SIZE 50M AUTOEXTEND ON NEXT 5M MAXSIZE …

Unity中Shader法线贴图(下)理论篇

文章目录 前言一、采样出错的原因二、切线空间是什么?切线空间图解: 三、计算方式1、统一变换到切线空间下进行计算2、统一变换到世界空间下进行计算 四、一般统一变换到世界空间下的坐标进行计算1、求M^-1^2、求出n~w~ 前言 这篇文章,主要解…

[Android] Amazon 的 android 音视频开发文档

https://developer.amazon.com/zh/docs/fire-tv/audio-video-synchronization.html#22-getplaybackheadposition-api-level-3https://developer.amazon.com/zh/docs/fire-tv/audio-video-synchronization.html#22-getplaybackheadposition-api-level-3

车载毫米波雷达行业发展1——概述

1.1 毫米波雷达定义及产品演进 1.1.1 毫米波雷达定义 毫米波雷达(mmWave Radar)是指工作在毫米波波段的雷达,其频域介于 30~300GHz,波长1~10mm。毫米波雷达稳定性高,抗干扰能力强,可穿透雾、烟、灰尘环境&#xff0…

Java基础-----StringBuffer和StringBuilder

文章目录 1.StringBuffer1.1 构造方法1.2 常用方法 2.StringBuilder3.String、StringBuffer、StringBuilder的区别 1.StringBuffer 内容可变的字符串类,适应StringBuffer来对字符串的内容进行动态操作,不会产生额外的对象。StringBuffer在初始时&#x…

AI集成ChatGPT敲代码神器Copilot

📑前言 本文主要是AI工具Copilot解读文章,如果有什么需要改进的地方还请大佬指出⛺️ 🎬作者简介:大家好,我是青衿🥇 ☁️博客首页:CSDN主页放风讲故事 🌄每日一句:努力…

实现领域驱动设计-应用结构

写在前面: DDD的一大好处便是它并不需要使用特定的架构。我们可以在整个系统中使用多种风格的架构。有些架构包围着领域模型,能够全局性地影响系统,而有些架构则满足了某些特定的需求。我们的目标是选择适合于自己的架构和架构模式。 在选择架…

【HarmonyOS开发】配置开发工具DevEco Studio

1、下载 注意: 1、安装过程中,一定要自定义安装位置,包比较大,包比较大,包比较大!!! 2、可以将该工具添加到右键中,否则,如果你的项目不是HarmonyOS&#xff…

BetterDisplay Pro v2.0.11(显示器颜色校准软件)

BetterDisplay Pro是一款为Mac电脑设计的屏幕亮度调节软件,旨在提高显示器的色彩和亮度表现。它可以根据用户的需求和显示器的特性,自动调整显示器的亮度、色温、对比度等参数,以获得更加真实、舒适的视觉效果。 这款软件拥有智能调节功能&a…

数据结构:枚举

概念 枚举主要用途是:将一组常量组织起来,在这之前表示一组常量通常使用定义常量的方式: 比如下面的例子: public static final int RED 1; public static final int GREEN 2; public static final int BLACK 3; 利用常量…

【深入Scrapy实战】从登录到数据解析构建完整爬虫流程

文章目录 1. 写在前面2. 抓包分析3. Scrapy提交登陆请求4. 列表与详情页面数据解析5. 中间件Middleware配置 【作者主页】:吴秋霖 【作者介绍】:Python领域优质创作者、阿里云博客专家、华为云享专家。长期致力于Python与爬虫领域研究与开发工作&#xf…

python django 小程序图书借阅源码

开发工具: PyCharm,mysql5.7,微信开发者工具 技术说明: python django html 小程序 功能介绍: 用户端: 登录注册(含授权登录) 首页显示搜索图书,轮播图&#xff0…

使用ssh在本地环境(Windows)连接虚拟机以及其中的docker容器

配置虚拟机防火墙 防火墙的一系列操作需要root权限,默认是没有root密码的,所以首先需要设置root密码: sudo passwd root按提示完成root密码设置 切换到root账户 su root启用22端口并重启防火墙 firewall-cmd --permanent --add-port22/tc…

【NI-RIO入门】CompactRIO介绍及环境安装

CompactRIO是什么? CompactRIO系统提供了高处理性能、传感器专用I/O和紧密集成的软件工具,使其成为工业物联网、监测和控制应用的理想之选。实时处理器提供可靠,可预测的行为,而FPGA在需要高速逻辑和精确定时的较小任务上表现出色…

Microsoft Visual Studio 2019下载及安装流程记录

第一周任务: 1.笔记本上安装vc2019的环境 2.再把OpenCV安装上 3.根据网上的教程,试着写几个opencv的程序 一、安装Visual Studio 2019社区版 首先先完成安装vc2019的环境, 因为: Microsoft Visual C是用于C编程的工具集合&am…

机器学习笔记 - Ocr识别中的CTC算法原理概述

一、文字识别 在文本检测步骤中,分割出了文本区域。现在需要识别这些片段中存在哪些文本。 机器学习笔记 - Ocr识别中的文本检测EAST网络概述-CSDN博客文章浏览阅读300次。在 EAST 网络的这个分支中,它合并了 VGG16 网络不同层的特征输出。现在,该层之后的特征大小将等于 p…

matlab 坡度滤波算法地面分割

目录 一、算法原理1、实现流程2、参考文献二、代码实现三、结果展示四、测试数据一、算法原理 1、实现流程 1、格网示意图 2、计算格网行列数 公式中的特殊符号为向上取整,

el-tree结合el-switch实现状态切换

<template><div><el-col :span"24"><el-card class"tree-card"><div class"sketch_content selectFile"><span class"span_title">组织列表 </span><div style"display: flex; jus…

《崩坏:星穹铁道》1.5仙舟罗浮-绥园全宝箱攻略

大家好&#xff0c;我是闲游盒小盒子&#xff0c;本篇来说下崩铁1.5版本仙舟罗浮-绥园的全宝箱攻略&#xff0c;共有19个宝箱加1个扑满&#xff1b;做完间章可获取前14个普通宝箱加2个精英怪宝箱&#xff0c;以及1个扑满&#xff1b;完成《狐斋志异》全任务可获得另外3个宝箱。…