1 Date类

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

1秒=1000毫秒

毫秒的0点:公元1970年 一月一日,午夜0:00:00 对应的毫秒值就是0

时间和日期的计算,必须依赖毫秒值。

System.currentTimeMillis()   返回以毫秒为单位的当前时间。返回值是long类型。

例:

public class Test {
public static void main(String[] args) {
long times=System.currentTimeMillis();
System.out.println(times);
}
}

1.1 Date类构造方法

1.1.1 Date()

注意导util下的Date包

例:

import java.util.Date;
public class Test {
public static void main(String[] args) {
//创建当前日期对象
Date date1=new Date();
System.out.println(date1); //创建指定毫秒值的日期对象
Date longdate=new Date(20000000000000L);
System.out.println(longdate);
}
}

1.2常用方法

getTime(),把日期对象转换成对应的时间毫秒值

例:

import java.util.Date;
public class Test {
public static void main(String[] args) {
Date date1=new Date();
System.out.println(date1.getTime()); Date longdate=new Date(20000000000000L);
System.out.println(longdate.getTime());
}
}

1.3 Date中还有getYear、getMouth等方法,但是已经过时,会有其他类的方法取代。

1.4 toString方法

上面打印date对象就是默认调用了toString方法。

2 DateFormat类

DateFormat 是日期/时间格式化子类的抽象类,

通过这个类可以完成日期和文本之间的转换。

也就是日期对象(new date())和字符串的互相转换。

2.1创建对象

DateFormat是抽象类,需要使用其子类SimpleDateFormat来创建对象。

参数是传一个指定格式,

指定格式的具体规则:

在一个字符串中,会将以下字母替换成对应时间组成部分,剩余内容原样输出:

年月日时分秒:

yyyy-MM-dd HH:mm:ss  注意要写yyyy(四个y),写成yy就是两位数的年份。

2.2常用方法

format方法,将Date对象转换成String

parse方法,将String转换成Date(转换时,该String要符合指定格式,否则不能转换)

例:

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date; public class Time02 {
public static void main(String[] args) throws ParseException {
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //日期对象转成字符串
Date date=new Date();
String datestr=sdf.format(date);
System.out.println(datestr); //字符串转成日期对象
String str="1999-05-05 12:05:06";
Date d=sdf.parse(str);
System.out.println(d);
}
}

这里注意要抛异常,因为有可能传一个错误的格式,

3 Calendar类(不常用)

Calendar是日历类,替换掉了许多Date的方法。

该类将所有可能用到的时间信息封装为静态成员变量,方便获取。

Calendar为抽象类,不能直接创建对象,而是通过静态方法创建,将语言敏感内容处理好,再返回子类对象。

3.1 Calendar类静态方法

3.2常用方法

例:

import java.util.Calendar;
import java.util.Date; public class Demo1 {
public static void main(String[] args) {
//创建Calendar对象
Calendar c=Calendar.getInstance(); //当前日期
//System.out.println(c); //时间偏移
System.out.println(c.get(Calendar.YEAR));
c.add(Calendar.YEAR, 1);
System.out.println(c.get(Calendar.YEAR));
c.add(Calendar.YEAR, -2);
System.out.println(c.get(Calendar.YEAR));
c.add(Calendar.DATE, 2);
System.out.println(c.get(Calendar.DATE)); //日历类转为日期类
Date d=c.getTime();
System.out.println(d); //将日历类设置成指定的时间
Calendar c2=Calendar.getInstance();
c2.set(Calendar.YEAR, 2008);
c2.set(Calendar.MONTH,7); //这是8月
c2.set(Calendar.DATE,8);
c2.set(2055, 7, 8, 8, 8, 8);
System.out.println(c2.getTime());
}
}

注意:

1)用fammat转换,必须先转成日期类

2)西方星期的开始为周日,中国为周一。

3)在Calendar类中,月份的表示是以0-11代表1-12月。

所以月要加1,星期要减1

4)日期是有大小关系的,时间靠后,时间越大。

4 练习

1)求出自己已经出生多少天

import java.util.Calendar;
public class Days {
public static void main(String[] args) {
//当前系统时间毫秒
long currenttime = System.currentTimeMillis(); //设置出生日期
Calendar c = Calendar.getInstance();
c.set(1987, 1, 5);
long birth = c.getTime().getTime(); //先转成日期类,再转成毫秒 //计算时间差
int day = (int) ((currenttime - birth) / 1000 / 60 / 60 / 24);
System.out.println("已出生" + day + "天");
}
}

2)求出今天距离2046年1月1日还有多少天

import java.util.Calendar;
public class Days2 {
public static void main(String[] args) {
// 当前系统时间毫秒
long currenttime = System.currentTimeMillis(); // 设置日期
Calendar c = Calendar.getInstance();
c.set(2046, 1, 1);
long future = c.getTime().getTime(); // 先转成日期类,再转成毫秒 // 计算时间差
int day = (int) ((future-currenttime) / 1000 / 60 / 60 / 24);
System.out.println("还有" + day + "天到2046年");
}
}

时间日期相关:Date类、DateFormat类、Calendar类的更多相关文章

  1. Date、DateFormat和Calendar类的简单认识

    第三阶段 JAVA常见对象的学习 Date.DateFormat和Calendar类的简单认识 Date类 Date:表示特定的瞬间,精确到毫秒. (一) 构造方法: Date():根据当前的默认毫秒 ...

  2. Math、Random、System、BigInteger、Date、DateFormat、Calendar类,正则表达式_DAY14

    1:Math&大数据类四则运算 X abs(X x) double random()         产生随机数 double ceil(double a)   向上取整 double flo ...

  3. java ->Date、DateFormat、Calendar类

    Date类概述 类 Date 表示特定的瞬间,精确到毫秒. 毫秒概念:1000毫秒=1秒 毫秒的0点: System.currentTimeMillis()  相当于Date d = new Date ...

  4. Java基础 与时间日期相关的类:System -Date -SimpleDateFormat -Calendar类 -解决后缀.000Z 的时区问题

    笔记总结: /**与时间相关的类:System_Date_SimpleDateFormat_Calendar类 * 1.system 类下的currentTimeMillis() * 输出从1970年 ...

  5. [常用类]时间内Date、SimpleDateFormat、Calendar类

    Date类的概述是util包下的,不能导入sql包的.* 类 Date 表示特定的瞬间,精确到毫秒. *构造方法 * public Date() * public Date(long date) 如果 ...

  6. JAVA常用API(Date、DateFormat、Calendar、System、Math、基本数据类型包装类)

    注:本文所有内容均属个人见解,如有错误望各位大佬好心指点批评,不胜感激 本章重点单词: parse:解析 format:格式化 pattern:模式 amount:数量 filed :领域 1.Dat ...

  7. 16_常用API_第16天(正则表达式、Date、DateFormat、Calendar)_讲义

    今日内容介绍 1.正则表达式的定义及使用 2.Date类的用法 3.Calendar类的用法 ==========================================第一阶段======= ...

  8. 常用API(正则表达式、Date、DateFormat、Calendar)

    常用API 今日内容介绍 u 正则表达式 u Date u DateFormat u Calendar 第1章 正则表达式 1.1 正则表达式的概念 正则表达式(英语:Regular Expressi ...

  9. 时间日期相关类:Date类,DateFormat类&SimpleDateFormat类,Calendar类

    日期相关类 1.Date类:日期时间类 A.构造方法 Date(): 根据当前系统时间创建日期对象 ​ Date(Long time):根据传入的毫秒值时间创建日期对象 B.成员方法 Long get ...

随机推荐

  1. Python手记

    字符串的拼接 1.“+”,如果是字符和数字相连,要使用str()函数对于数字进行字符转化: 2.join() 3.",",链接的两个字符串之间用空格做关联 4.占位符 tmp += ...

  2. [allmake] -- 交叉编译原来如此简单

    原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处.作者信息和本声明.否则将追究法律责任.:http://www.cnblogs.com/johnd/p/5060530.html 作者:Jo ...

  3. 【opencv学习笔记一】opencv下载安装与VS2017开发环境配置

    本文章摘录自浅墨博客,原文链接http://blog.csdn.net/poem_qianmo/article/details/19809337 目录 1.opencv下载与安装 2.计算机环境变量配 ...

  4. UnicodeDecodeError: 'ascii' codec can't decode byte 0xe6 in position 0: ordinal not in range(128)

    2017-03-16 11:23:29.601 1238 ERROR nova.compute.manager [instance: 3f195047-250a-4eb5-8da0-63bea6e26 ...

  5. js中全局变量的一点小知识点

    js中有三种方式定义全局变量: 在任何函数外面直接执行var语句,例如:var f="value"; 直接添加一个属性到全局变量上,在web浏览器中,全局对象名为window.例如 ...

  6. Thinkphp5+plupload图片上传功能,支持实时预览图片。

    今天和大家分享一个国外的图片上传插件,这个插件支持分片上传大文件.其中著名的七牛云平台的jssdk就使用了puupload插件,可见这个插件还是相当牛叉的. 这个插件不仅仅支持图片上传,还支持大多数文 ...

  7. 懒人模式开启Android模块自动化Api之旅

    推荐阅读: 滴滴Booster移动App质量优化框架-学习之旅 一 Android 模块Api化演练 不一样视角的Glide剖析(一) 在将业务进行模块化时,避免不了模块页面路由和模块通信, 大多数我 ...

  8. React 从入门到进阶之路(五)

    之前的文章我们介绍了  React 事件,方法, React定义方法的几种方式 获取数据 改变数据 执行方法传值.接下来我们将介绍 React 表单事件 键盘事件 事件对象以及 React中 的 re ...

  9. Mac安装python细节

    前言 之前在windows平台上安装python直接用Anaconda,优点是所有的科学计算的库都整合进去了,安装方便.在Mac系统下,当然也可以直接安装Anaconda,但是考虑到Mac会自带pyt ...

  10. Solr 6.7学习笔记(04)-- suggester 遇到的问题

    遇到的一些问题: 在前面的Suggest配置完后,我在 “/select” 这个 <requestHandler>里面加上了highlight的配置,可是当我在搜索框里输入字符时,竟然报如 ...