【前端学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:妈的,全是学习成本)

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

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

相关文章

pyQt主界面与子界面切换简易框架

本篇来介绍使用python中是Qt功能包,设置一个简易的多界面切换框架,实现主界面和多个子界面直接的切换显示。 1 主界面 设计的Demo主界面如下,主界面上有两个按钮图标,点击即可切换到对应的功能界面中,进入子界面后&a…

江湖再见,机器视觉兄弟们,我已经提离职了,聪明的机器视觉工程师,离职不亏本!

我闻江湖已叹息,又闻人间繁闹闹。同为布衣沦落人,相逢何必曾相识。 此生谁料事事休,道不尽人情冷暖,聚散离合总平常,不似勇气少年时。 我估计今年公司年底是发不出工资了,因为订单续不上。年终奖更是没有&…

vscode 设置vue3 通用页面模板

实现效果&#xff1a; 实现步骤&#xff1a; 1.在项目的 .vscode 目录下创建一个名为 vue3.2.code-snippets 的文件&#xff0c;它是一个 JSON 格式的代码片段文件 {"Vue3.2快速生成模板": {"prefix": "Vue3.2","body": ["<…

万字解析设计模式之代理模式

一、代理模式 1.1概述 代理模式是一种结构型设计模式&#xff0c;它允许通过创建代理对象来控制对其他对象的访问。这种模式可以增加一些额外的逻辑来控制对原始对象的访问&#xff0c;同时还可以提供更加灵活的访问方式。 代理模式分为静态代理和动态代理两种。静态代理是在编…

python循环语句

1、while循环 格式&#xff1a; while 判断条件&#xff1a; 执行语句 例子&#xff1a;使用while来计算1到100的总和 无限循环&#xff1a;通过设置条件表达式永远不为false while循环使用else语句&#xff1a;当while后面的条件语句为false时&#xff0c;则执行else的语句…

从入门到精通,mac电脑录屏软件使用教程!

“mac电脑怎么录屏呀&#xff0c;刚买了一台mac电脑&#xff0c;用了几个月感觉挺流畅的&#xff0c;最近因为工作原因&#xff0c;需要用到录屏功能&#xff0c;但是我不会操作&#xff0c;想问问大家有没有简单易懂的录屏教程&#xff0c;谢谢啦。” 在日常生活中&#xff0…

某60区块链安全之不安全的随机数实战二学习记录

区块链安全 文章目录 区块链安全不安全的随机数实战二实验目的实验环境实验工具实验原理实验内容EXP利用 不安全的随机数实战二 实验目的 学会使用python3的web3模块 学会以太坊不安全的随机数漏洞分析及利用 实验环境 Ubuntu18.04操作机 实验工具 python3 实验原理 由…

投资黄金:如何选择正确的黄金品种增加收益?

黄金一直以来都是备受投资者青睐的避险资产&#xff0c;然而&#xff0c;在庞大的黄金市场中&#xff0c;选择适合自己的黄金品种成为影响收益的关键因素。黄金投资并不只有一种方式&#xff0c;而是有很多种不同的黄金品种可以选择。每种黄金品种都有其独特的特点和风险&#…

【手撕数据结构】(三)顺序表和链表

文章目录 一、线性表二、顺序表1.概念及结构2.关于数组3.顺序表分类&#x1f397;️静态顺序表&#x1f397;️动态顺序表 4.接口实现&#xff08;1&#xff09;思路&#xff08;2&#xff09;SeqList.h文件代码功能1&#xff1a;顺序表初始化功能2&#xff1a;销毁顺序表功能3…

QT基础学习

2创建项目 2.1使用向导创建 打开Qt Creator 界面选择 New Project或者选择菜单栏 【文件】-【新建文件或项目】菜单项 弹出New Project对话框&#xff0c;选择Qt Widgets Application&#xff0c; 选择【Choose】按钮&#xff0c;弹出如下对话框 设置项目名称和路径&#xf…

5分钟教你轻松搭建Web自动化测试框架

在程序员的世界中&#xff0c;一切重复性的工作&#xff0c;都应该通过程序自动执行。「自动化测试」就是一个最好的例子。 随着互联网应用开发周期越来越短&#xff0c;迭代速度越来越快&#xff0c;只会点点点&#xff0c;不懂开发的手工测试&#xff0c;已经无法满足如今的…

在网络攻击之前、期间和之后应采取的步骤

在当今复杂的威胁形势下&#xff0c;网络攻击是不可避免的。 恶意行为者变得越来越复杂&#xff0c;出于经济动机的攻击变得越来越普遍&#xff0c;并且每天都会发现新的恶意软件系列。 这使得对于各种规模和跨行业的组织来说&#xff0c;制定适当的攻击计划变得更加重要。 …

【Linux】指令详解(二)

目录 1. 前言2. 重新认识指令2.1 指令的本质2.1.1 which2.1.2 alias 3. 常见指令3.1 whoami3.2 cd3.2.1 cd -3.2.2 cd ~ 3.3 touch3.3.1 文件创建时间 3.4 stat3.5 mkdir3.5.1 创建一个目录3.5.2 创建路径 3.6 tree3.7 rm3.7.1 rm -f3.7.2 rm -r 3.8 man3.9 cp3.10 mv 1. 前言 …

【洛谷 P3743】kotori的设备 题解(二分答案+递归)

kotori的设备 题目背景 kotori 有 n n n 个可同时使用的设备。 题目描述 第 i i i 个设备每秒消耗 a i a_i ai​ 个单位能量。能量的使用是连续的&#xff0c;也就是说能量不是某时刻突然消耗的&#xff0c;而是匀速消耗。也就是说&#xff0c;对于任意实数&#xff0c;…

【Unity】万人同屏高级篇, 自定义BRGdots合批渲染,海量物体目标搜索

Unity万人同屏海量物体合批渲染 Unity万人同屏海量物体目标搜索 Unity万人同屏手机端测试&#xff0c;AOT和HybridCLR热更性能对比 博文开发测试环境&#xff1a; Unity&#xff1a;Unity 2022.3.10f1&#xff0c;URP 14.0.8&#xff0c;Burst 1.8.8&#xff0c;Jobs 0.70.0-p…

Spring Boot - 自定义注解来记录访问路径以及访问信息,并将记录存储到MySQL

1、准备阶段 application.properties&#xff1b;yml 可通过yaml<互转>properties spring.datasource.urljdbc:mysql://localhost:3306/study_annotate spring.datasource.usernameroot spring.datasource.password123321 spring.datasource.driver-class-namecom.mysq…

Mybatis系列之 parameterMap 弃用了

我 | 在这里 &#x1f575;️ 读书 | 长沙 ⭐软件工程 ⭐ 本科 &#x1f3e0; 工作 | 广州 ⭐ Java 全栈开发&#xff08;软件工程师&#xff09; &#x1f383; 爱好 | 研究技术、旅游、阅读、运动、喜欢流行歌曲 &#x1f3f7;️ 标签 | 男 自律狂人 目标明确 责任心强 ✈️公…

Java八股文(急速版)

Redis八股文 我看你在做项目的时候都使用到redis&#xff0c;你在最近的项目中哪些场景下使用redis呢? 缓存和分布式锁都有使用到。 问&#xff1a;说说在缓存方面使用 1.在我最写的物流项目中就使用redis作为缓存&#xff0c;当然在业务中还是比较复杂的。 2.在物流信息…

创新工具 | 教你6步用故事板设计用户体验事半功倍

问题 构思方案时团队在细节上难以共识 故事板是什么&#xff1f;故事板就像连环画一样&#xff0c;将用户使用解决方案的关键步骤顺序串联了起来&#xff0c;呈现了方案和用户之间的交互。 故事板以先后顺序展现团队票选出来的最佳解决方案&#xff0c;在过程中对于方案中未…

几个强力的nodejs库

几个强力的nodejs库 nodejs被视为许多Web开发人员的理想运行时环境。 nodejs的设计是为了在运行时中使用JavaScript编写的代码&#xff0c;它是世界上最流行的编程语言之一&#xff0c;并允许广泛的开发者社区构建服务器端应用程序。 nodejs提供了通过JavaScript库重用代码的…