时间处理相关类

时间是一个一维的东东。所以,我们需要一把刻度尺来区表达和度量时间。在计算机世界,我们把1970 年 1 月 1 日 00:00:00定为基准时间,每个度量单位是毫秒(1秒的千分之一)。

 

我们用long类型的变量来表示时间,从基准时间往前几亿年,往后几亿年都能表示。如果想获得现在时刻的“时刻数值”,可以使用:

long  now1 = System.currentTimeMillis();

这个“时刻数值”是所有时间类的核心值,年月日都是根据这个“数值”计算出来的。我们工作学习涉及的时间相关类有如下这些:

 

java.util.Calendar  日历 日期计算用他 (java.util.GregorianCalendar公历,阳历。)

java.util.Date 核心类 (根本 先学他)

java.text.DateFormat 时间格式化 完成字符串和时间对象的转化 format   parse

核心类(java.util.Date)

Date时间类(java.util.Date)

在标准Java类库中包含一个Date类。它的对象表示一个特定的瞬间,精确到毫秒。

Date()分配一个Date对象,并初始化此对象为当前的日期和时间精确到毫秒)。

(long date) 分配 Date 对象并初始化此对象,以表示自从标准基准时间(称为“历元(epoch)”,即 1970 年 1 月 1 日 00:00:00 GMT)以来的指定毫秒数。

boolean after(Date when) 测试此日期是否在指定日期之后。

booleanbefore(Date when)  测试此日期是否在指定日期之前。

boolean equals(Object obj) 比较两个日期的相等性。

long getTime()返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。

String toString() 把此 Date 对象转换为以下形式的 String:

dow mon dd hh:mm:ss zzz yyyy 其中: dow 是一周中的某一天 (Sun、 Mon、Tue、 Wed、 Thu、 Fri、 Sat)。

【示例1Date类的使用

 package cn.bjsxt.dateclass;

 /** 参照源码
* 测试Date类的用法
*/
import java.util.Date; public class TestDate { /**
* @param args
*/
public static void main(String[] args) {
Date d = new Date();
long t = System.currentTimeMillis();
System.out.println(t); Date d2 = new Date();
//北京时间
System.out.println(d2);
//国际标准时间 d2.toGMTString()不建议使用,他画了横线 说明 不建议使用 通过注解@Deprecated废弃的 下面写分方法会打上横线
System.out.println(d2.toGMTString());
//set
d2.setTime();
//get long类型的值
System.out.println(d2.getTime());
//时间比较
System.out.println(d.getTime()<d2.getTime()); } }
 import java.util.Date;

 public class Test {

     public static void main(String[] args) {

        Date date1 = new Date();

        System.out.println(date1.toString());

        long i = date1.getTime();

        Date date2 = new Date(i - );

        Date date3 = new Date(i + );

        System.out.println(date1.after(date2));

        System.out.println(date1.before(date2));

        System.out.println(date1.equals(date2));

        System.out.println(date1.after(date3));

        System.out.println(date1.before(date3));

        System.out.println(date1.equals(date3));

        System.out.println(

            new Date(1000L *  *  *  *  *   39L).toString());  //why?

     }

 }

查看API文档大家可以看到很多方法过时了,JDK1.1之前的Date包含了:日期操作、字符串转化成时间对象,时间对象。

JDK1.1之后,日期操作使用:Canlendar类来。 字符串转化:DateFormat。

时间格式化

DateFormat类和SimpleDateFormat类

·作用

把时间对象转化成指定格式的字符串。反之,把指定格式的字符串转化成时间对象。

DateFormat是一个抽象类,一般使用SimpleDateFormat类。

【示例2DateFormat类和SimpleDateFormat类的使用

 public class TestDareFormat {

     /**
*
* java.text.DateFormat 时间格式化 完成字符串和时间对象的转化 format parse
* @param args
*/
public static void main(String[] args) {
// 格式
DateFormat df = new SimpleDateFormat("yyyy年 MM月dd日 hh:mm:ss,属于本年的第w周,属于本月的第W周"); Date d = new Date(3323213123L);
//时间对象转成字符串 (按格式化字符串)
String str = df.format(d);
System.out.println(str); System.out.println("##################");
//将字符串转换成时间对象
String str2 = "1977-7-7";//需要和下面的格式一致 不一致会报错
DateFormat df2 = new SimpleDateFormat("yyyy-MM-dd");
//解析 得到时间对象
try {
Date d2 =df2.parse(str2);
System.out.println(d2);
} catch (ParseException e) { e.printStackTrace();
}
} }
 import java.text.ParseException;

 import java.text.SimpleDateFormat;

 import java.util.Date;

 public class Test {

     public static void main(String[] args) throws   ParseException {

         //new出SimpleDateFormat对象

        SimpleDateFormat s1 = new   SimpleDateFormat("yyyy-MM-dd hh:mm:ss");

        SimpleDateFormat s2 = new   SimpleDateFormat("yyyy-MM-dd");

        //将时间对象转换成字符串

        String daytime = s1.format(new Date());

        System.out.println(s2.format(new Date()));

        System.out.println(new   SimpleDateFormat("hh:mm:ss").format(new Date()));

        //将符合指定格式的字符串转成成时间对象.字符串格式需要和指定格式一致。

        String time = "2007-10-7";

        Date date = s2.parse(time);

        System.out.println("date1: " + date);

        time = "2007-10-7 20:15:30";

        date = s1.parse(time);

        System.out.println("date2: " + date);

     }

 }

表  格式化字符的含义

字母

日期或时间元素

表示

示例

G

Era 标志符

Text

AD

y

Year

199696

M

年中的月份

Month

JulyJul;   07

w

年中的周数

Number

27

W

月份中的周数

Number

2

D

年中的天数

Number

189

d

月份中的天数

Number

10

F

月份中的星期

Number

2

E

星期中的天数

Text

TuesdayTue

a

Am/pm 标记

Text

PM

H

一天中的小时数(0-23)

Number

0

k

一天中的小时数(1-24)

Number

24

K

am/pm 中的小时数(0-11)

Number

0

h

am/pm 中的小时数(1-12)

Number

12

m

小时中的分钟数

Number

30

s

分钟中的秒数

Number

55

S

毫秒数

Number

978

z

时区

General   time zone

Pacific Standard TimePSTGMT-08:00

Z

时区

RFC   822 time zone

0800

java.util.Calendar  日历 日期计算用他 (java.util.GregorianCalendar公历,阳历。)

GregorianCalendar是Calendar的一个具体子类,提供了世界上大多数国家和地区使用的标准日历系统、

注意:

月份:一月是0,二月是1,。。。。十二月是11

星期:周日是1,周一是2、、、、周六是7

 package cn.bjsxt.dateclass;

 import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar; public class TestCalendar { /**
* @param args
* 时刻和日期的转化
* java.util.Calendar 日历 日期计算用他 (java.util.GregorianCalendar公历,阳历。)
* GregorianCalendar是Calendar的一个具体子类,提供了世界上大多数国家和地区使用的标准日历系统、
* 注意:
* 月份:一月是0,二月是1,。。。。十二月是11
* 星期:周日是1,周一是2、、、、周六是7
*/
public static void main(String[] args) {
//创建日期类对象
Calendar c = new GregorianCalendar();
c.set(, , , , , );
//获得时间的
Date d=c.getTime();
System.out.println(d);
System.out.println(c.get(Calendar.YEAR));
//测试 日期计算
c.add(Calendar.YEAR, );
System.out.println(c.get(Calendar.YEAR)); } }

常用类一一时间处理相关类一一java.util.Tomezone(java.util.Calendar , java.util.Date , java.text.DateFormat)的更多相关文章

  1. Java常用类之【日期相关类】

    一.日期类 Java语言提供了2个类来处理日期 Date类 Date类以毫秒来表示特定的日期 构造方法 Date date = new Date(); System.out.println(date) ...

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

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

  3. java常用类详细介绍及总结:字符串相关类、日期时间API、比较器接口、System、Math、BigInteger与BigDecimal

    一.字符串相关的类 1.String及常用方法 1.1 String的特性 String:字符串,使用一对""引起来表示. String声明为final的,不可被继承 String ...

  4. Android随笔之——Android时间、日期相关类和方法

    今天要讲的是Android里关于时间.日期相关类和方法.在Android中,跟时间.日期有关的类主要有Time.Calendar.Date三个类.而与日期格式化输出有关的DateFormat和Simp ...

  5. Java基础之Java常用类--Object类,字符串相关类,包装类,日期相关类,数字相关类

    Java是一种面向对象的语言,也就是将万事万物可以描述为对象,特点如下: 1.面向对象是常见的一种思考习惯,符合人们的思考习惯.2.面向对象的出现,将复杂的事情简单化.3.面向对象的出现,将之前过程中 ...

  6. day15--Java常用类之日期相关类

    Java常用类 3.日期相关类 3.1Date类 在标准Java类库中包含一个Date类,它的对象表示一个特定的瞬间,精确到毫秒.在网上商城下单时,在对报销单进行审核时,都需要获取当前的时间,通过Da ...

  7. SQL一次查出相关类容避免长时间占用表(下)

    /* server: db: EDI */ -- 以下案例多次查询同一张表,仅有Name条件不同 --可以使用一次查出相关类容避免长时间占用表 USE EDI GO DECLARE @FileType ...

  8. SQL一次查出相关类容避免长时间占用表(上)

    /* server: db: EDI */ -- 以下案例多次查询同一张表,仅有组合条件Name+Direction不同 --可以使用一次查出相关类容避免长时间占用表 USE EDI GO DECLA ...

  9. C#文件操作常用相关类(Directory类、File类、Path类)

    1.文件操作常用相关类 1)File //操作文件,静态类,对文件整体操作.拷贝.删除.剪切等 2)Directory //操作目录(文件夹),静态类 3)DirectoryInfo //文件夹的一个 ...

随机推荐

  1. UOJ 393 【NOI2018】归程——可持久化并查集

    题目:http://uoj.ac/problem/393 题解:https://www.cnblogs.com/HocRiser/p/9368067.html 但过不了 UOJ 的 hack 数据.不 ...

  2. shell 前台进程组的选择

    控制命令如ctrl+c,ctrl+d等命令是会kill到前台进程组的,这个过程和bash进程还有tty驱动有关系. 在终端执行命令,在bash进程看来都是在执行job,然后fork出子进程来执行这些j ...

  3. OOD与OOP的思想的感悟

    Walking on water and developing software from a specification are easy if both are frozen) -Edward V ...

  4. git: fatal: Could not read from remote repository

    This is probably an Intellij problem. Your key are managed natively by ssh, and Intellij has it's ow ...

  5. VMware全屏时, 隐藏上方工具栏横条

    VMware全屏时, 隐藏上方横条 菜单栏打开 编辑 选择 首选项 找到 显示 取消勾选 在全屏时取消固定时显示工具栏边缘

  6. 中点Brehensam画圆算法

    #include<stdio.h> #include<stdlib.h> #include<graphics.h> #include<math.h> v ...

  7. TensorFlow函数:tf.FIFOQueue队列

    转载:https://blog.csdn.net/akadiao/article/details/78552037 tf.FIFOQueue tf.FIFOQueue继承基类QueueBase. Qu ...

  8. EL中拼接字符串的方法

    近期在项目中碰到一个需要在JSP页面中比较两String类型的值的问题,于是想当然的写了如下代码: <c:if test="${'p'+longValue=='p1'}"&g ...

  9. java编译器

    编译: .java变成.class        前端编译   Sun javac Eclipse ECJ .class变成机器码      运行期编译 等HostSpot VM c1,c2 .jav ...

  10. 面对最菜TI战队,OpenAI在Dota2上输的毫无还手之力

    作者:Tony Peng 去年,OpenAI 的 1v1 AI 击败了世界顶尖选手 Dendi,OpenAI CTO Greg Brockman 承诺:明年,我们会带着 5v5 的 AI bot 重回 ...