首页 > 编程语言 >Java重点 | DateFormat和SimpleDateFormat类

Java重点 | DateFormat和SimpleDateFormat类

时间:2022-12-10 19:31:35浏览次数:45  
标签:Java String DateFormat 09 模式 SimpleDateFormat parse Date

DateFormat和SimpleDateFormat类

DateFormat类和它的子类SimpleDateFormat,后者是前者的子类,所以它有父类的format和parse方法。

java.text.DateFormat:是日期/时间格式化子类的抽象类。 作用: 格式化(也就是日期->文本) 、解析(文本->日期)

构造方法

DateFormat类是一个抽象类,无法直接创建对象使用,可以使用DateFormat类的子类 java.text.SimpleDateformat extends DateFormat 构造方法: SimpleDateFormat(String pattern):用给定的模式和默认语言环境的日期格式符号构造SimpleDateFormat。 参数: String pattern:传递指定的模式

模式:区分大小写

y
M
d
H
m
s

写对应的模式,会把模式替换为对应的日期和时间 “yyyy-MM-dd HH:mm:ss” 注意: 模式中的字母不能更改,连接模式的符号可以改变"yyyy年MM月dd日 HH时mm分ss秒"

成员方法

String format(Date date)按照指定的模式,把Date日期,格式化为符合模式的字符串 Date parse(String source)把符合模式的字符串,解析为Date日期

使用这两个成员方法及其细节

public static void main(String[] args) throws ParseException {
        demo01();
        demo02(); //调用的方法也会出红线,也要光标放红线上alt+回车选择第一个
    }

    private static void demo01() {
        //使用DateFormat类中的format方法,把日期格式转化为文本
        //1.创建SimpleDateFormat对象,构造方法中传递指定的模式
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年mm月dd日 HH时mm分ss秒");//传入指定的模式
        //2.调用SimpleDateFormat对象中的方法format,按照构造方法中指定的模式,把Date日期格式转换为符合模式的字符串(文本)
        //String format(Date date) 按照指定模式,把Date日期,格式化为符合模式的字符串
        Date date =new Date(); //获取当前系统时间
        String format = sdf.format(date);
        System.out.println(date); //Sun May 09 16:09:50 CST 2021
        System.out.println(format); //2021年09月09日 16时09分50秒
    }


    /*
        使用DateFormat类中的parse方法,把文本解析成为Date日期
        1.创建SimpleDateFormat对象,构造方法中传递指定的模式
        2.调用SimpleDateFormat对象中的方法parse,把符合构造方法中模式的字符串,解析为Date日期
        注意:
            public Date parse(String source)throws ParsejException
            parse方法声明一个异常叫ParseException
            如果字符串和构造方法的模式不一样,那么程序就会抛出异常
            调用一个抛出异常的方法,就必须的处理这个异常
            要么throws继续抛出这个异常,要么try catch自己处理
            出现红色的线,有异常,光标放红线上alt+回车选择第一个;调用的方法也会出红线,也要光标放红线上alt+回车选择第一个
            这就是在我的方法声明这个异常,我不处理,我声明一下
            程序没有问题,正常执行
            出现问题,打印异常,并终止程序
     */
    private static void demo02() throws ParseException {

        //使用DateFormat类中的parse方法,把文本解析成为Date日期
        //1.创建SimpleDateFormat对象,构造方法中传递指定的模式
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年mm月dd日 HH时mm分ss秒");//传入指定的模式

        //Date parse(String source) 把符合,模式的字符串,解析为Date日期
        //2.调用SimpleDateFormat对象中的方法parse,把符合构造方法中模式的字符串,解析为Date日期
        /*
        出现红色的线,有异常,光标放红线上alt+回车选择第一个;调用的方法也会出红线,也要光标放红线上alt+回车选择第一个
        这就是在我的方法声明这个异常,我不处理,我声明一下
         */
//        把字符串类型按照传入构造模式解析成为Date类型,传入指定模式和字符串要一样,字符串这边少个秒就报错
        Date parse = sdf.parse("2021年09月09日 16时09分50秒");
        System.out.println(parse);//Sat Jan 09 16:09:50 CST 2021
    }

练习

在这里插入图片描述

public static void main(String[] args) throws ParseException {
        Scanner scanner = new Scanner(System.in); // 输入:2001-07-02 
        System.out.println("请输入出生日期(格式为yyyy-mm-dd):");
        String next = scanner.next(); //拿到字符串出生日期

        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-mm-dd");
        Date parse = simpleDateFormat.parse(next); //把字符串出生日期解析成为DAte格式
        long ee = parse.getTime(); // 把Date格式的出生日期转换为毫秒值

        Date aa = new Date(); //获取当前日期毫秒值
        long hh = aa.getTime(); //把当前日期毫秒值转换成为毫秒值
//        Date aa = new Date().getTime(); 一步到位 匿名

        long dd = hh-ee; //差值
        long jj = dd/1000/60/60/24; //把毫秒值转换成为天
        System.out.println(jj); // 输出:7908。 代表着 2001-07-02 到今天已经过了7908天
//        System.out.println(dd/1000/60/60/24); //一步到位

    }

标签:Java,String,DateFormat,09,模式,SimpleDateFormat,parse,Date
From: https://blog.51cto.com/u_15841797/5927831

相关文章

  • 如何使用Java获取货币符号?
    1.前言最近做了一个支付相关的需求,要求在收银台页面显示商品的价格时带上货币符号¥,类似下图中的格式:最初我是用的下面这样的代码:System.out.println(Currency.getInsta......
  • java操作hadoop之MapReduce
    1.Mapper文件WordCountMapper.javapackagecom.hdfs;importorg.apache.hadoop.io.IntWritable;importorg.apache.hadoop.io.LongWritable;importorg.apache.hadoo......
  • 使用JavaWeb进行增删改查操作
    一、基本环境准备1、配置pop.xmlpop文件可以直接复制使用不作修改,也可以根据自己的需求进行增删依赖和插件 1<?xmlversion="1.0"encoding="UTF-8"?>2<project......
  • java运算符
    运算符基本了解运算符:对字面量或者对变量进行操作的符号表达式:用运算符把字面量或者变量连接起来(符合java语法的句子)就可以称为表达式,不同运算符连接的表达式体现......
  • javascript:微信扫一扫下载android应用的引导页
    一,js代码:<html><head><metacharset="utf-8"/><title>测试</title></head><bodystyle="padding:0px;margin:0px;"><!--background--><divsty......
  • oracle/mysql/lightdb/postgresql java jdbc类型映射
    MySQL数据类型JAVA数据类型JDBCTYPE普通变量类型主键类型BIGINTLongBIGINT支持支持TINYINTByteTINYINT支持不支持SMALLINTShortSMALLINT支持不支持MEDIUMINTIntegerINTEGER......
  • 【Java】【数据库】B树
    B-树的形式(B-树就是B树,而且'-'是一个连接符号,不是减号。)B树的结构如下不同于B+树(关于B+树,我的这篇博客里有写:B+树)的一些特点:数据\(K_i\)左边的树不会将\(K_i\)......
  • java 接口(interface)
    接口的作用:1.接口就是约束,它可以定义一些方法,让不同的人实现。2.接口不能被实例化,接口中没有构造方法。3.接口可以实现多个通过implement关键字去实现,实......
  • 小新学Java16-【缓冲流、转换流、序列化流】
    一、缓冲流1.1概述缓冲流,也叫高效流,是对4个基本的Filexxx流的增强,所以也是4个流,按照数据类型分类︰字节缓冲流︰BufferedInputStream,BufferedoutputStream字符......
  • javascript: addEventListener对事件冒泡和事件捕获的处理演示(chrome 108.0.5359.98)
    一,js代码<html><head><metacharset="utf-8"/><title>测试</title></head><bodystyle="padding:0px;margin:0px;"><buttonid="btn">点击</button>......