java learn 日期

本文介绍了Java中日期处理的基础知识,包括java.util.Date类,时间原点的概念,以及如何通过System.currentTimeMillis()获取当前日期的毫秒数。还详细讲解了SimpleDateFormat类的使用,用于日期格式化和解析,并强调了格式化的模式字母必须固定。同时,文章提到了Calendar类在日历操作中的应用,如增加日期和设置特定日期。

Date类
注意:是java.util.Date;(声明)
而非 java.sql.Date,此类是给数据库访问的时候使用的
只要是类 其调用方法格式都是一致的
时间原点概念:
所有的数据类型,无论是整数,布尔,浮点数还是字符串,最后都需要以数字的形式表现出来。

日期类型也不例外,换句话说,一个日期,比如2020年10月1日,在计算机里,会用一个数字来代替。

那么最特殊的一个数字,就是零. 零这个数字,就代表Java中的时间原点,其对应的日期是1970年1月1日 8点0分0秒 。 (为什么是8点,因为中国的太平洋时区是UTC-8,刚好和格林威治时间差8个小时)

为什么对应1970年呢? 因为1969年发布了第一个 UNIX 版本:AT&T,综合考虑,当时就把1970年当做了时间原点。

所有的日期,都是以为这个0点为基准,每过一毫秒,就+1。

创建日期对象:
在这里插入图片描述
图例解释:
1、getTime() 得到一个long型的整数
这个整数代表 从1970.1.1 08:00:00:000 开始 每经历一毫秒,增加1
2、当前日期的毫秒数
new Date().getTime() 和 System.currentTimeMillis() 是一样的
不过由于机器性能的原因,可能会相差几十毫秒,毕竟每执行一行代码,都是需要时间的

SimpleDateFormat 日期格式化类
类的使用一般都要引入:
import java.text.SimpleDateFormat;
这类里面提供了两个方法:
1、format 日期转字符串(这种情形是增加日期的可读性 因为运行出的结果显示不是我们生活中的书写格式 所以才转换)

package le;
import java.text.SimpleDateFormat;
import java.util.Date;
  
public class TestDate {
  
    public static void main(String[] args) {
          
        //y 代表年
        //M 代表月
        //d 代表日
        //H 代表24进制的小时
        //h 代表12进制的小时
        //m 代表分钟
        //s 代表秒
        //S 代表毫秒
        SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS" );//实例化一个对象 括号里的内容就是预留来转换的相应格式
        Date d= new Date();//当前日期
        String str = sdf.format(d);//format这个方法的作用就是将其日期转换成字符串的 所以在这定义一个字符串
        System.out.println("当前时间通过 yyyy-MM-dd HH:mm:ss SSS 格式化后的输出: "+str);
         
        SimpleDateFormat sdf1 =new SimpleDateFormat("yyyy-MM-dd" );
        Date d1= new Date();
        String str1 = sdf1.format(d1);
        System.out.println("当前时间通过 yyyy-MM-dd 格式化后的输出: "+str1);
         
    }
}

值得注意的是:
yyyy-MM-dd HH:mm:ss SSS —— 这种转换的格式 其设定是固定的 y代表年 M 代表月 …
这些的代表字母是不可以改变的 把代表年的y用其他字母表示 编译器运行要报错。

2、parse 字符串转日期(这种情形是面对用户输入 进行内部转换)
示例:
在这里插入图片描述
这里的原理和日期转字符串差不多 但是涉及到了异常处理
所以这里大致讲解一下 以后的学习会遇见:

1、首先这个声明——import java.text.ParseException;
是异常处理的声明 也是个
2、

 try {
            
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

这一部分就是和异常处理有关的 代码段 按照先前的日期转字符串是不需要的 但是删除这段代码编译器就会报错 因为是考虑到
new SimpleDateFormat(“yyyy/MM/dd HH:mm:ss” );和
String str = “2016/1/5 12:12:12”; 中的格式一不一样 ——是不是同为斜杠(/)或者减号(-)
模式(yyyy/MM/dd HH:mm:ss)需要和字符串格式保持一致,如果不一样就会抛出解析异常ParseException

try catch这个结构 和循环结构 同理 都是固定的搭配 是纯关键字 f3 按键是看不到源码的。
ParseException e 就是在定义引用 因为ParseException就是个类。所以才有e.printStackTrace();这段方法引用 这个方法的作用就是在判断用户输入日期的格式是否规范之后弹出框来提醒用户输入正确的格式

Calendar类
Calendar类即日历类,常用于进行“翻日历”,比如下个月的今天是多久

1、Calendar与Date进行转换
采用单例模式获取日历对象Calendar.getInstance();
主要是引用了getInstance这个方法
也是需要声明 import java.util.Calendar;
在这里插入图片描述

2、翻日历
add方法,在原日期上增加年/月/日
set方法,直接设置年/月/日
以下是具体的写法 及其用法示例:
在这里插入图片描述
细节:
private static String format(Date time) {
return sdf.format(time);
}
这里的 Date time (会自动获取当前日期)和String name 一样是传参

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值