【前端学java】java中的日期操作(12)

news2024/11/23 11:32:50

往期回顾:

  • 【前端学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.coloradmin.cn/o/1230519.html

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

相关文章

蓝桥杯每日一题2023.11.20

题目描述 “蓝桥杯”练习系统 (lanqiao.cn) 题目分析 方法一&#xff1a;暴力枚举&#xff0c;如果说数字不在正确的位置上也就意味着这个数必须要改变&#xff0c;进行改变记录即可 #include<bits/stdc.h> using namespace std; const int N 2e5 10; int n, a[N], …

江苏专转本考试时,遇到不会的题目该怎么办呢??

有很多同学最近在问&#xff0c;如果专转本考试时遇到 不会的题目怎么办&#xff1f;&#xff1f; 考场上题目太陌生没见过会不会凉凉 以学姐自身经验分享&#xff0c;其实未必会凉凉&#xff0c;当时我在16届计算机考试时&#xff0c;遇上了填空题新题型&#xff0c;当时在考…

微服务学习|Gateway网关:网关作用、快速入门、路由断言工厂、路由过滤器配置、全局过滤器、过滤器执行顺序、跨域问题处理

为什么需要网关 网关功能: 1.身份认证和权限校验 2.服务路由、负载均衡 3.请求限流 网关的技术实现 在SpringCloud中网关的实现包括两种:gateway、zuul Zuul是基于Servlet的实现&#xff0c;属于阻塞式编程。而SprinaCloudGateway则是基于Spring5中提供的WebFlux&#xf…

three.js实现管道漫游

先看效果&#xff1a; <template><div><el-container><el-main><div class"box-card-left"><div id"threejs" style"border: 1px solid red"></div><div class"box-right"><pre s…

【LeetCode】104. 二叉树的最大深度

104. 二叉树的最大深度 难度&#xff1a;简单 题目 给定一个二叉树 root &#xff0c;返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;3示例 …

Java(三)(static,代码块,单例设计模式,继承)

目录 static 有无static修饰的成员变量 有无static修饰的成员方法 static的注意事项 代码块 静态代码块 实例代码块 单例设计模式 饿汉式单例写法 懒汉式单例写法 继承 基本概念 注意事项 权限修饰符 单继承 object 方法重写 子类方法中访问其他成员(成员变量…

Maven工程继承关系,多个模块要使用同一个框架,它们应该是同一个版本,项目中使用的框架版本需要统一管理。

1、父工程pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/PO…

Android studio run 手机或者模拟器安装失败,但是生成了debug.apk

错误信息如下&#xff1a;Error Installation did not succeed. The application could not be installed&#xff1a;List of apks 出现中文乱码&#xff1b; 我首先尝试了打包&#xff0c;能正常安装&#xff0c;再次尝试了debug的安装包&#xff0c;也正常安装&#xff1…

C#基础教程 多线程编程入门 Thread/Task/async/await

private void button1_Click(object sender, EventArgs e){//控制主线程(单线程操作)MessageBox.Show("开始做菜", "友情提示");Thread.Sleep(3000);//主线程休眠MessageBox.Show("素菜做好了","友情提示");Thread.Sleep(5000);Messag…

linux上安装qt creator

linux上安装Qt Creator 1 Qt Creator 的下载 下载地址为&#xff1a;http://download.qt.io/archive/qt/ 根据自己的需求选择Qt Creator版本&#xff0c;这里我下载的是5.12.9&#xff0c;如下图所示&#xff1a; 在ubuntu上可以使用wget命令下载安装包&#xff1a; wget h…

el-table实现表格内嵌套表格

文章目录 一、效果图二、使用场景三、所用组件元素&#xff08;Elementui&#xff09;四、代码部分 一、效果图 二、使用场景 &#x1f6c0;el-form 表单内嵌套el-table表格 &#x1f6c0;el-table 表格内又嵌套el-table表格 三、所用组件元素&#xff08;Elementui&#xff…

BLE协议栈入门学习

蓝牙LE栈 物理层 频带 蓝牙LE在2400MHz到2483.5MHz范围内的2.4GHz免授权频段工作&#xff0c;该频段分为40个信道&#xff0c;每个信道间隔为2MHz。 时分 蓝牙LE是半双工的&#xff0c;可以发送和接收&#xff0c;但不能同时发送和接收&#xff0c;然而&#xff0c;所有的设…

“绵柔的,好喝的”海之蓝畅销20年的经典秘诀:做大众喜爱的好酒

执笔 | 尼 奥 编辑 | 萧 萧 在中国白酒历史长河中&#xff0c;有的品牌如大浪淘沙而灰飞烟灭&#xff0c;也有的白酒品牌因为不断创新而经久不衰。我们时常在思考一个产业命题&#xff1a;白酒品牌常青的秘诀到底是什么&#xff1f; 经过20多年的产业发展&#xff0c;中国…

4-2计算小于1000的正整数的平方根

#include<stdio.h> #include<math.h> int main() {int i;int t;printf("请输入一个数:");scanf("%d",&i);if(i>1000){printf("请重新输入一个数&#xff1a;");scanf("%d",&i);}tsqrt(i);printf("%d的平方…

要事第一:如何通过6个步骤确定项目的优先级

当收到很多项目请求并且每个请求都是重中之重时&#xff0c;该怎么办&#xff1f;从最易完成的开始&#xff1f;还是先解决最大的问题&#xff1f; 实际上两种做法都不对。确定项目优先级的更好方法是评估以下内容&#xff0c;而不是关注项目规模或完成时长&#xff1a; ● 每…

论文导读 | 大语言模型与知识图谱复杂逻辑推理

前 言 大语言模型&#xff0c;尤其是基于思维链提示词&#xff08;Chain-of Thought Prompting&#xff09;[1]的方法&#xff0c;在多种自然语言推理任务上取得了出色的表现&#xff0c;但不擅长解决比示例问题更难的推理问题上。本文首先介绍复杂推理的两个分解提示词方法&a…

滚珠螺杆在航天工业领域中的重要性

滚珠螺杆是重要的航天工业配件之一&#xff0c;在航天工业领域中具有非常重要的地位和作用。 首先&#xff0c;滚珠螺杆作为一种高精度、高刚度的传动元件&#xff0c;能够提供准确的传动和定位精度&#xff0c;从而保证航天器的可靠性和性能。航天器在飞行过程中需要精确控制其…

【STM32】W25Q64 SPI(串行外设接口)

一、SPI通信 0.IIC与SPI的优缺点 https://blog.csdn.net/weixin_44575952/article/details/124182011 1.SPI介绍 同步&#xff08;有时钟线&#xff09;&#xff0c;高速&#xff0c;全双工&#xff08;数据发送和数据接收各占一条线&#xff09; 1&#xff09;SCK:时钟线--&…

软件数据采集使用代理IP的好处用哪些?

随着互联网的快速发展&#xff0c;越来越多的企业开始通过软件数据采集来获取目标客户的信息。然而&#xff0c;在进行数据采集的过程中&#xff0c;由于不同网站的访问规则和限制&#xff0c;经常会遇到一些问题。这时候&#xff0c;使用代理IP就可以很好地解决这些问题。下面…

震惊!这个网站几分钟就能制作出电子画册

一直以来&#xff0c;制作电子画册都是一项繁琐且耗时的任务&#xff0c;需要专业的设计技能和大量的时间。 但是现在&#xff0c;有了这个神奇的网站&#xff0c;FLBOOK在线制作电子杂志平台。一切都变得如此简单&#xff01;它不仅提供了丰富的模板和素材&#xff0c;还支持在…