1       时间和日期

1.1      日期类Date和格式化SimpleDateFormat

日期使用过程中需要将日期Date对象转化为字符串,或者将字符串形式的日期转化为日期Date对象。可以通过格式化类SimpleDateFormat来实现。

Date date = new Date(); //获取当前的系统时间。

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss") ; //使用了默认的格式创建了一个日期格式化对象。

1.1.1   日期Date转字符串

String time = dateFormat.format(date); //可以把日期转换转指定格式的字符串

System.out.println("当前的系统时间:"+ time);

1.1.2   字符串转Date

String birthday = "2000年12月26日 11:29:08";

Date date2 = dateFormat.parse(birthday); //注意:指定的字符串格式必须要与SimpleDateFormat的模式要一致。

System.out.println(date2);

1.2      日历类Calendar

Calendar这个专门用于对日期进行操作的类,可以获取到日期中的年、月、日、时、分、秒,可以进行日期的加减运算。还可以和Date和String之间转换。

1.2.1   Calendar类解析

(1)Calendar的声明

public abstract class Calendar extends Objectimplements Serializable, Cloneable, Comparable<Calendar>

该类被abstract所修饰,说明不能通过new的方式来获得实例,对此,Calendar提供了一个类方法getInstance,以获得此类型的一个通用的对象,getInstance方法返回一个Calendar对象(该对象为Calendar的子类对象),其日历字段已由当前日期和时间初始化:

Calendar rightNow = Calendar.getInstance();

(2)Calendar.getInstance函数实现

Calendar.getInstance函数内部会根据不同国家的本地时区和本地时间格式类型生成不同日历对象。例如西方国家1表示星期日,而中国1表示星期一。

public static Calendar getInstance()

{

Calendar cal = createCalendar(TimeZone.getDefaultRef(), Locale.getDefault(Locale.Category.FORMAT));

cal.sharedZone = true;

return cal;

}

(3)createCalendar内部实现

private static Calendar createCalendar(TimeZone zone,

Locale aLocale)

{

Calendar cal = null;

String caltype = aLocale.getUnicodeLocaleType("ca");

if (caltype == null) {

// Calendar type is not specified.

// If the specified locale is a Thai locale,

// returns a BuddhistCalendar instance.

if ("th".equals(aLocale.getLanguage())

&& ("TH".equals(aLocale.getCountry()))) {

cal = new BuddhistCalendar(zone, aLocale);

} else {

cal = new GregorianCalendar(zone, aLocale);

}

} else if (caltype.equals("japanese")) {

cal = new JapaneseImperialCalendar(zone, aLocale);

} else if (caltype.equals("buddhist")) {

cal = new BuddhistCalendar(zone, aLocale);

} else {

// Unsupported calendar type.

// Use Gregorian calendar as a fallback.

cal = new GregorianCalendar(zone, aLocale);

}

return cal;

}

1.3      Calendar时间运算

1.3.1   获取时间值

创建一个日历对象,获取年、月、日、时、分、秒。

Calendar cal = Calendar.getInstance();

// 赋值时年月日时分秒常用的6个值,注意月份下标从0开始,所以取月份要+1

System.out.println("年:" + cal.get(Calendar.YEAR));

System.out.println("月:" + (cal.get(Calendar.MONTH) + 1));

System.out.println("日:" + cal.get(Calendar.DAY_OF_MONTH));

System.out.println("时:" + cal.get(Calendar.HOUR_OF_DAY));

System.out.println("分:" + cal.get(Calendar.MINUTE));

System.out.println("秒:" + cal.get(Calendar.SECOND));

1.3.2   设置时间值

通过set函数设置时间的各个值。

cal.set(Calendar.YEAR,2000);//

cal.set(Calendar.MONTH) ,10); 设置值为10,表示11月

cal.set(Calendar.DAY_OF_MONTH));

cal.set(Calendar.HOUR_OF_DAY));

cal.set(Calendar.MINUTE));

cal.set(Calendar.SECOND));

1.3.3   加减运算

(1)在除夕晚上加上一秒,会自动进位

Calendar cal = Calendar.getInstance();

System.out.println(cal.getTime());

cal.set(2018, 1, 15, 23, 59, 59);

cal.add(Calendar.SECOND, 1);

System.out.println(cal.getTime());

输出结果为:

Thu Feb 15 23:59:59 CST 2018

Fri Feb 16 00:00:00 CST 2018

(2)1 月 31 号的时候,月份加一,会出现怎样结果

Calendar cal = Calendar.getInstance();

cal.set(2018, 1, 31, 8, 0, 0);

System.out.println(cal.getTime());

cal.add(Calendar.MONTH, 1);

System.out.println(cal.getTime());

运行结果:

Wed Jan 31 08:00:00 CST 2018

Wed Feb 28 08:00:00 CST 2018

说明 add 月份时,会将不存在的日期归为当月日历的最后一天。

所以说Calendar会根据日历中的时间规则自动进位和修改时间格式。

1.4      Calendar和Date、String之间的转换

(1)Calendar 转化 String

//获取当前时间的具体情况,如年,月,日,week,date,分,秒等

Calendar calendat = Calendar.getInstance();

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

String dateStr = sdf.format(calendar.getTime());

(2)String 转化Calendar

String str="2010-5-27";

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

Date date =sdf.parse(str);

Calendar calendar = Calendar.getInstance();

calendar.setTime(date);

(3)Date 转化String

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

String dateStr=sdf.format(new Date());

(4)String 转化Date

String str="2010-5-27";

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

Date birthday = sdf.parse(str);

(5)Date 转化Calendar

Calendar calendar = Calendar.getInstance();

calendar.setTime(new java.util.Date());

(6)Calendar转化Date

Calendar calendar = Calendar.getInstance();

java.util.Date date =calendar.getTime();

java日期和时间Date、Calendar、SimpleDateFormat的更多相关文章

  1. Java日期和时间

    目录 Java 日期和时间 Java 日期和时间 学习自 http://blog.csdn.net/zjf280441589/article/details/50447533 Date类 Date 类 ...

  2. Java 日期与时间

    章节 Java 基础 Java 简介 Java 环境搭建 Java 基本语法 Java 注释 Java 变量 Java 数据类型 Java 字符串 Java 类型转换 Java 运算符 Java 字符 ...

  3. Java日期与时间的处理/Date,String,Calendar转换

    public class Demo01 { //Java中Date类和Calendar简介 public static void main(String[] args) { long now=Syst ...

  4. Java的三种日期工具 Date Calendar SimpleDateFormat

    三种日期工具 配合下面的案例可以更加深度的了解 Date 需要导包java.util.Date Date d = new Date(); //两种都是获取到现在时间的时间戳 long t1 = d.g ...

  5. java日期类型转换总结date timestamp calendar string

    用Timestamp来记录日期时间还是很方便的,但有时候显示的时候是不需要小数位后面的毫秒的,这样就需要在转换为String时重新定义格式.         Timestamp转化为String: S ...

  6. Java日期类:Date和Calendar的使用

    总是使用这两个类,总是需要百度.还不如一次全部整理完. 一.介绍: Date 类 Date 表示特定的瞬间,精确到毫秒. 在 JDK 1.1 之前,类 Date 有两个其他的函数.它允许把日期解释为年 ...

  7. [Java]Java日期及时间库插件 -- Joda Time.

    来到新公司工作也有一个多月了, 陆陆续续做了一些简单的项目. 今天做一个新东西的时候发现了 Joda Time的这个东西, 因为以前用的都是JDK原生的时间处理API, 大家都知道Java原生的时间处 ...

  8. 基础笔记4(包装类,时间date. calendar

    1.包装类 基本类型和对象. 编译器会对基本类型和包装类进行自动拆箱,装箱处理 Interger  i=5; int i=new Interger(4); 一个缓存问题:以便提高效率 integer ...

  9. java 日期与时间操作

    我们先来了解一下基本的概念 日期 2020-11-21 2020-11-22 时间 15:36:43 2020-11-21 15:36:43 时区 北京时间 2020-11-21 15:36:43 东 ...

随机推荐

  1. 在centos7 上安装Python3

    Centos7缺省是python2.7. 现在需要使Python2和python3 共存,所以需要单独安装python3. 但是需要注意的是如果按缺省方式安装,则会替换python为python3.x ...

  2. MongoDB系列----查

    开启查询: db.getMongo().setSlaveOk() 查版本: db.servion(); db.serverBuildInfo(); db.serverStatus().storageE ...

  3. 接口自动化框架(java)--1.项目概述

    项目github地址: https://github.com/tianchiTester/API_AutoFramework 这套框架的报告是自己封装的 1.测试基类TestBase: 接口请求的te ...

  4. 使用Apache JMeter对SQL Server、Mysql、Oracle压力测试(二)

    接着第一篇的写: 第三步,测试SQL Server数据库的性能: a.加载JDBC SQL Server驱动.添加线程组和设置线程属性和第二步一样,就不再赘述了: b.设置JDBC Connectio ...

  5. supervise守护进程

    通过二进制supervise文件可以直接对进程进行守护 ./supervise -f  要守护的程序 -p  守护信息存储位置 例如: ./supervise -f  http_server -p s ...

  6. vue页面传参

    1.传的参数是数组 传递参数的页面 let setStr = encodeURIComponent(JSON.stringify(this.tableData)); this.$router.push ...

  7. php----------const 定义的常量和define()定义的常量的区别?

    用法一:const用于类成员变量,一经定义不可修改,define用于全局常量,不可用于类成员变量的定义,const可在类中使用也可以在类外面使用,define不能. 定义:const 常量名=值; 没 ...

  8. Shadow DOM及自定义标签

    参考链接:点我 一.什么是Shadow DOM Shadow DOM,直接翻译的话就是 影子 DOM,可以理解为潜藏在 DOM 结构中并且我们无法直接控制操纵的 DOM 结构.类似于下面这种结构 Sh ...

  9. 2017 6 2php用PDO链接数据库前测试

    try { $dsn = "mysql:dbname=test;host=127.0.0.1";//链接mysql的DSN(数据库驱动) $user = 'root';//Mysq ...

  10. 排序之冒泡排序(bubblesort)

    package com.pailian; /* * 冒泡排序 * 比较相邻的俩位数,这样每轮比较都会出现一个最大值或最小值 * 下一轮比较就会减少一次(因为已经知道了一个最大值或最小值) * 注意根据 ...