Java的日期类

一、Date类

Java中 ,所有的数据类型,无论是整形,布尔,浮点数还是字符串,最后都会以数字的形式表现出来(计算机中,只有0,1)
日期类型也一样,比如现在2019年8月15日,在计算机中,也是用一个数字来代替的。0是一个很特殊的数字,代表着Java的时间原点,对应的日期是1970年1月1日8点0分0秒。为什么不是0点0分0秒呢,这是因为中国的太平洋时区是UTC-8,刚好和格林的时间差8个小时。

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

1.创建Date对象

package date;

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

public class TestDate {

	public static void main(String[] args) {
		
		Date d1= new Date();	
		System.out.println(d1);

	}
	

}

2.Date的基本方法

getTime()
调用这个方法会得到一个long型的整数
这个整数代表着从1970.1.1.08:00:00开始,每经历一毫秒,+1

package date;

import java.util.Date;

public class TestDate {

	public static void main(String[] args) {
		
		Date d1= new Date();
		System.out.println(d1.getTime);//得到一个long型整数
		//从时间原点开始一直加
	
	}
	

}

System.currentTimeMillis()方法

这个方法返回当前时间的毫秒数

public static void main(String[] args) {
        Date now= new Date();
  
        //当前日期的毫秒数
        System.out.println("Date.getTime() \t\t\t返回值: "+now.getTime());
        //通过System.currentTimeMillis()获取当前日期的毫秒数
        System.out.println( System.currentTimeMillis());
           
    }

2.SimpleDateFormat 日期格式化类

SimpleDateFormat 这个类是Date类的子类,主要作用是对日期格式化,按照标准的时间输出格式输出时间

主要方法有:

format日期转字符串
parse字符串转日期

(1)日期转为字符串

有两种格式
“yyyy-MM-dd HH:mm:ss SSS”
yyyy-MM-dd

代码示例:

package date;
  
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);
        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);
         
    }
}

(2)字符串转日期
模式(yyyy/MM/dd HH:mm:ss)需要和字符串格式保持一致,如果不一样就会抛出解析异常ParseException

代码示例:

package date;
  
//
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
  
public class TestDate {
  
    public static void main(String[] args) {
        SimpleDateFormat sdf =new SimpleDateFormat("yyyy/MM/dd HH:mm:ss" );
  
        String str = "2016/1/5 12:12:12";
          
        try {
            Date d = sdf.parse(str);
            System.out.printf("字符串 %s 通过格式  yyyy/MM/dd HH:mm:ss %n转换为日期对象: %s",str,d.toString());
        } catch (ParseException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
          
    }
}

三、日历
Calendar类

采用单例模式获取Calendar对象

代码示例:

package date;
  
//
import java.util.Calendar;
import java.util.Date;
  
public class TestDate {
  
    public static void main(String[] args) {
        //采用单例模式获取日历对象Calendar.getInstance();
        Calendar c = Calendar.getInstance();
          
        //通过日历对象得到日期对象
        Date d = c.getTime();
  
        Date d2 = new Date(0);
        c.setTime(d2); //把这个日历,调成日期 : 1970.1.1 08:00:00
    }
}

Calendar类中的方法

方法简介
add()方法在原日期上增加年/月/日
set()方法直接设置年/月/日

代码示例:

package date;
 
import java.text.SimpleDateFormat;
//
import java.util.Calendar;
import java.util.Date;
 
public class TestDate {
 
    private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 
    public static void main(String[] args) {
        Calendar c = Calendar.getInstance();
        Date now = c.getTime();
        // 当前日期
        System.out.println("当前日期:\t" + format(c.getTime()));
 
        // 下个月的今天
        c.setTime(now);
        c.add(Calendar.MONTH, 1);
        System.out.println("下个月的今天:\t" +format(c.getTime()));
 
        // 去年的今天
        c.setTime(now);
        c.add(Calendar.YEAR, -1);
        System.out.println("去年的今天:\t" +format(c.getTime()));
 
        // 上个月的第三天
        c.setTime(now);
        c.add(Calendar.MONTH, -1);
        c.set(Calendar.DATE, 3);
        System.out.println("上个月的第三天:\t" +format(c.getTime()));
 
    }
 
    private static String format(Date time) {
        return sdf.format(time);
    }
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值