Java常用类(二)

news2024/11/23 9:07:17

目录

JDK8之前的日期时间API

java.lang.System类

java.util.Date类

两个构造器的使用

两个方法的使用

 java.sql.Date类

涉及两个问题:

 java.text.SimpleDateFormat类

格式化:日期--->字符串

解析:字符串--->日期(格式化的逆过程)

 java.util.Calendar(日历)类

获取Calendar实例的方法

Calandar类的常用方法


JDK8之前的日期时间API

java.lang.System类

System类提供public static long currentTimeMillis()用来返回当前时间与1970年1月1日0时0分0秒之间以毫秒为单位的时间差。(时间戳)

计算世界时间的主要标准有:

  • UTC(Coordinated Universal Time)//世界协调时间
  • GMT(Greenwich Mean Time)//格林威治标准时间
  • CST(Central Standard Time)
    • CST可以代表如下 4 个不同的时区://CST可以同时表示美国,澳大利亚,中国,古巴四个国家的标准时间 
      • Central Standard Time (USA) UT-6:00 
      • Central Standard Time (Australia) UT+9:30 
      • China Standard Time UT+8:00 
      • Cuba Standard Time UT-4:00 

java.util.Date类

表示特定的瞬间,精确到毫秒

两个构造器的使用

  • 构造器一:util下的Date():创建一个对应当前时间的Date对象
  • 构造器二:util下的Date(long date):创建一个指定时间的Date对象

两个方法的使用

  • 方法一:toString():把此 Date 对象转换为以下形式的 String: dow mon dd hh:mm:ss zzz yyyy 其中: dow 是一周中的某一天 (Sun, Mon, Tue, Wed, Thu, Fri, Sat),zzz是时间标准)
  • 方法二:getTime():获取当前Date对象所对应的毫秒数(时间戳:自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象 表示的毫秒数)
import org.junit.Test;

import java.util.Date;
public class DateTimeTest {
     @Test
    public void test1(){

        //构造器一:util下的Date():创建一个对应当前时间的Date对象
        Date date1 = new Date();
        System.out.println(date1.toString());
        System.out.println(date1.getTime());

        //构造器二:util下的Date():创建指定时间的Date对象
        Date date2 = new Date(1669275759155L);
        System.out.println(date2.toString());
    }
}

运行结果:

 java.sql.Date类

java.sql.Date类对应着数据库中的日期变量类型

涉及两个问题:

  • 1、如何实例化sql.Date对象
  • 2、util.Date和sql.Date对象如何相互转换
package com.light.java;

import org.junit.Test;

import java.util.Date;

/**
 * @auther light
 * @Description JDK8之前的日期时间API
 * @create 2022-11-24 15:35
 */
public class DateTimeTest {
    /**
     * |---java.sql.Date类
     *  java.sql.Date:对应这数据库中的日期类型变量
     *      >如何实例化
     *      >sql.Date--->util.Date(直接赋值:多态)
     *
     *      >如何将java.util.Date对象转换为java.sql.Date对象:
     *
     */
    @Test
    public void test1(){
                              
       System.out.println("\n**********************sqlDate**************************");
        //创建SQL类中的Date对象
        java.sql.Date date3 = new java.sql.Date(1669276192545L);
        System.out.println(date3.toString());//只输出年月日
        System.out.println("\n**********************sql.Date--->util.Date(直接赋值:多态)**************************");
        Date date4 = new Date();
        date4=date3;
        System.out.println(date4.toString());


        System.out.println("\n**********************将java.util.Date对象转换为java.sql.Date对象**************************");
        //从父类-->子类
        Date date5=new Date();
        java.sql.Date date6=new java.sql.Date(date5.getTime());//利用getTime()方法获取util.Date和sql.Date中共有的部分
        System.out.println(date6.toString());

    }
}

运行结果

 java.text.SimpleDateFormat类

Date类的API不易于国际化,大部分被废弃了,java.text.SimpleDateFormat 类是一个不与语言环境有关的方式来格式化和解析日期的具体类。

格式化:日期--->字符串

  • SimpleDateFormat():默认模式的语言环境创建对象(默认构造器)
  • SimpleDateFormat(String pattern):该构造器可以用参数pattern指定的的格式创建一个对象,该对象调用:
    • public String format(Date date):方法格式化时间对象

解析:字符串--->日期(格式化的逆过程)

  • public Date parse(String source):从给定字符串的开始解析文本,以生成一个日期

import org.junit.Test;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * @auther light
 * @Description JDK 8之前的日期时间的API测试
 * SimpleDateFormat
 *  
* @create 2022-11-25 19:32
 */
public class DateTimeTest {
    /**
     * SimpleDateFormat的使用:SimpleDateFormat是对日期Date类的格式化和解析
     *
     * 1、两个操作:格式化和解析
     *      格式化:日期----->字符串
     *      解析:格式化的逆过程:字符串---->日期
     *
     * 2、SimpleDateFormat的实例化
     *
     */
    @Test
    public void test1() throws ParseException {
        //实例化SimpleDateFormat:使用默认构造器
        SimpleDateFormat sdf = new SimpleDateFormat();

        //格式化日期 java.util.Date
        Date date = new Date();
        System.out.println(date);
        String format = sdf.format(date);
        System.out.println(format);

        //解析:格式化的逆过程:字符串--->日期
        String str="22-11-25 下午7:42";
        Date parse = sdf.parse(str);
        System.out.println(parse);


        System.out.println("************按指定的方式格式化和解析:带参数的构造器*******************");
        SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        //格式化
        String format1 = sdf1.format(date);
        System.out.println(format1);//2022-11-25 08:40:43
        //解析:要求字符串必须是SimpleDateFormat识别的格式(通过构造器参数体现)
        Date parse1 = sdf1.parse("2022-11-25 08:36:46");
        System.out.println(parse1);


    }


  
}

运行结果:

 java.util.Calendar(日历)类

Calendar是一个抽象基类(不能被实例化),主用用于完成日期字段之间相互操作的功能。

获取Calendar实例的方法

  •  使用其静态方法getInstance()
  •  创建Calendar的子类(GregorianCalendar)的构造器。

Calandar类的常用方法

  • 一个Calendar的实例是系统时间的抽象表示,通过get(int field)方法来取得想要的时间信息。比如YEAR、MONTH、DAY_OF_WEEK、HOUR_OF_DAY 、 MINUTE、SECOND
  •  public void set(int field,int value)//该方法没有返回值,直接在原有字符串上进行修改
  •  public void add(int field,int amount)//该方法没有返回值,直接在原有字符串上进行修改
  •  public final Date getTime()
  •  public final void setTime(Date date)

注意:

  • 获取月份时:一月是0,二月是1,以此类推,12月是11
  • 获取星期时:周日是1,周二是2 , 以此类推,周六是7 
 import org.junit.Test;


import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

public class DateTimeTest {
/**
     * 日历类(抽象类)的使用
     */
    @Test
    public void testCalender(){
     //一、实例化
        //方式一:创建子类GregorianCalendar的构造器
        GregorianCalendar g=new GregorianCalendar();
        //set
        g.set(2022,11,28);
        System.out.println(g.getTime());
        //方式二:调用其静态方法getInstance()
        Calendar calender = Calendar.getInstance();

    //二、常用方法
        //get()

        int i = calender.get(Calendar.DAY_OF_MONTH);
        System.out.println(i);
        //set()
        calender.set(Calendar.DAY_OF_MONTH,27);
        int i1 = calender.get(Calendar.DAY_OF_MONTH);
        System.out.println(i1);

        //add()
        calender.add(Calendar.DAY_OF_MONTH,-1);
        int i2 = calender.get(Calendar.DAY_OF_MONTH);
        System.out.println(i2);

        //getTime():将Calender类转换为Date类
        Date date = calender.getTime();
        System.out.println(date);


        //setTime():将Date类转换为Calender类
        Date date1 = new Date();
        calender.setTime(date1);
        int i3 = calender.get(Calendar.DAY_OF_MONTH);
        System.out.println(i3);

    }
}

运行结果

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

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

相关文章

基于TM的遥感数据的叶面积指数估算解决方案及或取途径

1、背景与技术路线 叶面积指数是重要的植被结构参数,反演叶面积指数是植被遥感的重要研究内容之一,其影响生 态系统的物质和能量循环,成为作物生长、路面过程、水文和生态等模型的输入参数或状态变量。今 年来,对也铭记指数的反演…

Spark系列之Spark的RDD详解

title: Spark系列 第五章 Spark 的RDD详解 5.1 RDD概述 ​ RDD 是 Spark 的基石,是实现 Spark 数据处理的核心抽象。那么 RDD 为什么会产生呢? ​ Hadoop的MapReduce是一种基于数据集的工作模式,面向数据,这种工作模式一般是从…

Python_数据容器_集合set

一、集合set的定义 考虑使用集合的场景,通过已经学习的列表、元组、字符串三个数据容器特性来分析: 列表可以修改、支持重复元素且有序 元组、字符串、不可修改、支持重复元素且有序 局限就在于:它们支持重复元素 集合定义语法&#xff1…

KubeVirt with DPDK

发布于2022-11-25 15:52:32阅读 1020 Kubernetes优秀的架构设计,借助multus cni intel userspace cni 可以屏蔽了DPDK底层的复杂,让KubeVirt 支持DPDK变得比较容易。 因为 e2e验证 等原因,KubeVirt社区至今未加入对DPDK支持,本篇…

有用的CSS代码块

文章目录调试 DOM 元素的 border通用的网页样式调试 DOM 元素的 border 显示所有DOM元素的border,方便调试网页元素的相对布局。 * {outline: auto; }如何用javascript设置某个网页的style(复制以下代码到浏览器控制台执行即可)? // wuyujin1997 var …

PIC单片机5——串口 中断

//10M晶振 波特率9600 BRG8位波特率发生器 异步模式 #include "p18f458.h" #include "mydelay.h" #pragma config OSCHS,WDTOFF,LVPOFF,DEBUGON void PIC18F_High_isr(void);/*中断服务函数声明*/ void PIC18F_Low_isr(void); void usart_tx(unsigned ch…

基于javaweb房屋租赁管理系统的设计与实现

摘要 当今社会不管房屋出租、出售买卖是必不可少的,人们不管走到哪里都需要有一个温馨的家,有一个落脚之地,所以房源出租市场也是非常火爆!不管是房源出租公司或者是个人都需要一套完整的管理系统来掌握整个市场信息。针对这一需求…

观察者模式在spring中的应用

作者:王子源 1 观察者模式简介 1.1 定义 指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。这种模式有时又称作发布-订阅模式、模型-视图模式,它是对象行为型模式。 …

离散卡尔曼滤波实现

离散卡尔曼滤波基本理论 卡尔曼预报器、平滑器可以参考之前的博客:(2条消息) 卡尔曼滤波器_KPer_Yang的博客-CSDN博客 下面贴上一张图1,很直观:分成时间更新和测量更新两步,其中的KKK和PPP有可能随着时间推移变成常数&#xff0…

STM32实战总结:HAL之RTC

RTC基础知识参考: 51单片机内部外设:实时时钟(SPI)_路溪非溪的博客-CSDN博客 STM32中的RTC 51单片机通常是外置的RTC芯片如DS1302,那么STM32的RTC是什么情况呢? STM32芯片自带RTC,因此不须像其他MCU需外接RTC模块。 先…

年末盘点Android 过去一年与未来的一个走势~

随着Android的发展,有些人对Android未来感到茫然,不少人可能会产生这样的疑惑:“从事Android是不是没有前途,Android开发还有什么值得学?“这类话题一直让大家争论不休,它并没有一个确切、唯一的标准答案&a…

中介者模式

思考中介者模式 当多个类(对象)耦合严重时,通过中介者模式创建一个中介者,多个类不直接交互了,变成和中介者进行交互,松散耦合 1.中介者模式的本质 中介者模式的本质:封装交互。 中介者模式的目的&#xff…

关于无感刷新Token,我是这样子做的

本文正在参加「金石计划 . 瓜分6万现金大奖」 什么是JWT JWT是全称是JSON WEB TOKEN,是一个开放标准,用于将各方数据信息作为JSON格式进行对象传递,可以对数据进行可选的数字加密,可使用RSA或ECDSA进行公钥/私钥签名。 使用场景…

WPSpell将拼写检查添加到VCL应用程序

WPSpell将拼写检查添加到VCL应用程序 WPSpell包括键入功能时的拼写。拼写错误的单词带有下划线,可以使用上下文菜单进行更正。它还包括一个传统的拼写检查对话框,并支持多个词典。WPSpell特别适合与WPTools一起使用。 WPSpell功能 键入时进行拼写检查。 …

1-FreeRTOS入门指南

本专栏是根据官方提供的文档进行FreeRTOS的各个功能函数的说明,以及函数的使用 本专栏不涉及动手操作,只是对原理进行说明,FreeRTOS基础知识篇更新完成会对如何在开发板上进行上手实战操作。 这里不会对比其他RTOS的优缺点,因为每…

2、Redis中简单动态字符串的简介,也就是Redis中的键和值的字符串底层表达

简介 首先在Redis中,没有直接使用C语言传统字符串表示(以空字符结尾的字符数组,以下简称C字符串),而是自己构建了一种名为简单动态字符串(simple dynamic string,SDS)的抽象类型(可以简单的理解为Java中的String 类),并且将SDS用作Redis的默…

动态规划算法(1)

认识动态规划 动态规划的求解思路: 1. 把一个问题分解成若干个子问题 2. 将中间结果保存以避免重复计算 基本步骤: 1. 找出最优解的性质,然后刻画结构特征 (找规律) 2. 最优解(最好的解决方案 定义) 循环(递归) 3. 以…

我与梅西粉丝们的世界杯观球日常

世界杯 ⚽️ 期间,我与其他的梅西粉丝在某 APP 里建了个梅粉聊天群,群内人数上万人,大家一起讨论赛事热点,可谓热火朝天,此起彼伏,这是四年一度的狂欢,虽值冬季,但热情不减。 “阿根…

配置设备远程管理—eNSP

案例:给路由器配置远程管理,使一台路由器远程管理另一台。 所需设备:两台路由器,一根网线 图示 一、给两台设备配置IP地址 AR1(以下命令) a. sy b. int g0/0/0 c. ip add 1.1.1.1 24AR2 a. sy b. int g0/0…

十分钟学完简单工厂,普通工厂,抽象工厂

快速学习简单工厂,普通工厂,抽象工厂前言:产品等级和产品族工厂模式作用简单工厂模式uml代码优缺点普通工厂模式uml代码优缺点抽象工厂模式uml代码优缺点前言:产品等级和产品族 在学习工厂模式之前,先得了解一下产品等…