18.时间日期类.md

一、Date对象

毫秒是一个long类型的值,要精确嘛,浮点数不精确
在中国,Java会自动改为东8区 CST ;
补充:格林威治时间 GMT ;

// 获得date对象
Date date = new Date();
System.out.println(date);

// 得到毫秒值 1秒 = 1000 毫秒 = 1E9 纳秒
// 返回的是GMT 现在到 1970 1 1 00:00:00之间的毫秒值
long haomiao = date.getTime(); // Calendar是返回时间对象
System.out.println(date.getTime());
date.setTime(long time) 设置Date类的值。

// 将long型的整数转换成一个Date对象。
// long类型性对于格林威治时间点。
Date date2 = new Date(0L);
System.out.println(new Date(0L));

二、DateFormat类

java.text.DateFormat 是抽象类,作用日期(Date)与文本(String)之间的转换
用子类java.text.SimpleDateFormat实现,构造函数的参数为模式

常用的模式规则:

标识字母(区分大小写) 含义
y
M
d
H
m
s
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateFormatStudy {

    public static void main(String[] args)  throws ParseException {
        Date date = new Date();

        // format方法 Date ------> String
        // 创建日期格式化对象,默认风格为 2018/11/9 下午4:56
        DateFormat df0 = new SimpleDateFormat();
        // 创建日期格式化对象,并制定格式化的风格
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        
        String str = df.format(date);
        System.out.println(str); // 2018-11-09 16:53:10
        
        // parse方法 String ------> Date
        // @@当前调用函数要写抛异常 ParseException
        // 必须对其进行捕获或声明以便抛出
        DateFormat df2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String str2 = "2018-12-11 12:12:12"; // 格式必须正确
        Date date2 = df2.parse(str2);
        System.out.println(date2);
    }
}

总结:

  • 创建方式:DateFormat df = new SimpleDateFormat(String pattren)
  • 转换成字符串:df.format(Date对象) ---\> String
  • 转换成Date: df.parse(str),其中有两点注意事项
    1. 必须在调用函数中显示抛出异常throws ParseException
    2. 转换的字符串必须和日期格式化对象的格式一致。

三、Calendar类

由于Java是美国佬开发的,有些文化习惯有点差异,针对于Calendar类。

  • 月份要 + 1; 倒着计算要减1
  • 一周中的第几天:要 -1; 倒着要加1

Calendar为抽象类,由于语言敏感性,需要通过调用静态方法创建一个实例

Calendar类中提供了很多成员变量:

字段值 含义
YEAR
MONTH 月(从0开始,可以+1使用)
DAY_OF_MONTH 月中的天(几号)
HOUR 时(12小时制)
HOUR_OF_DAY 时(24小时制)
MINUTE
SECOND
DAY_OF_WEEK 周中的天(周几,周日为1,可以-1使用)
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

// @@创建一个Calendar实例,默认当前系统时间。
Calendar cal = Calendar.getInstance();

// @@get方法用来获取指定字段的值;
int year = cal.get(Calendar.YEAR);
// 注意:月份要+1
int month = cal.get(Calendar.MONTH) + 1;
int dayOfMonth = cal.get(Calendar.DAY_OF_MONTH);

System.out.println(year + "年" + month + "月" + dayOfMonth + "日");

// @@set方法用来设置指定字段的值;
cal.set(Calendar.YEAR, 2020);
year = cal.get(Calendar.YEAR);
System.out.println(year + "年" + month + "月" + dayOfMonth + "日");

// @@add方法,对指定日历字段的值进行加减操作,正数加,负数减
cal.add(Calendar.YEAR, 2);
cal.add(Calendar.DAY_OF_MONTH, -2);

year = cal.get(Calendar.YEAR);
dayOfMonth = cal.get(Calendar.DAY_OF_MONTH);
System.out.println(year + "年" + month + "月" + dayOfMonth + "日");


// @@getTime, 得到Date对象,不是等同于Date的getTime得到毫秒值
Date date = cal.getTime();
System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date));

// @@ setTime(Date date) 通过指定的Date对象设置Calendar
cal.setTime(new Date);

西方星期的开始为周日,中国为周一;Calendar类中,月份是以0-11代表1-12月;
日期是有大小关系的,时间靠后,时间越大。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、工具类 Java中提供了大量的类和接口完成特定的功能。每个类都会有自己的属性和行为(功能)。但是这些功能还是不...
    Villain丶Cc阅读 1,712评论 0 1
  • import java.text.SimpleDateFormat;import java.util.Calend...
    霙愔阅读 762评论 0 2
  • 我被时光遗留在一个角落,一切都已停止,惟有天上飘扬的雪花。身不由己的雪花,也许会被捧起,融化于指尖,也许会...
    冰夫阅读 123评论 0 0
  • 空气是甜的 月亮也是甜的 像极了沾了水汽的棉花糖 黏在嘴角的砂糖粒 一不小心抿一下嘴唇 就把你拉回那个夜晚
    Chaner522阅读 255评论 0 2
  • 正式践行《爱不完》第二天。 儿子睡到下午快5点才起床,一起床,就要求去买电动车。我趁机说:前段时间给你买了手机,我...
    在阳光下微笑_69c5阅读 132评论 0 1