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. python迭代-如何实现反向迭代

    如何实现反向迭代 问题举例 实现一个连续浮点数发生器FloatRange,根据给定范围(start, end)和步进值(step) 产生一系列连续的浮点数,如FloatRange(3.0, 4.0, ...

  2. js常用的400个特效

    JavaScript实现可以完全自由拖拽的效果,带三个范例     http://www.sharejs.com/showdetails-501.aspx javascript实现可以自由拖动的树形列 ...

  3. 浅谈Linux文件与目录权限

    作为一个程序员,在工作的过程中或多或少都会接触都Linux,那么对于权限这块肯定有所了解,今天有空想谈谈觉得比较绕的权限问题,即文件权限与目录权限 1.文件权限,对于文件权限这个是比较简单的,也很容易 ...

  4. 寻找U2OS中表达的基因及其promoter并用于后续annotation

    方法1.RNA-seq得到不同表达程度基因 方法2. 直接download U2OS_gene.csv https://cancer.sanger.ac.uk/cell_lines/download ...

  5. ftp 上传和下载

    ftp 下载 #!/bin/bash #auth liwei #date DATE=$(date -d today +%Y%m%d) #data files path SRCDIR=/home/web ...

  6. arcgis for js 根据多边形自动缩放

    交代背景:多边形已经渲染在图层上,然后根据多边形自动缩放值合适的大小: 思路:获取图层信息,获取图层中的几何信息,获取图形范围信息,在地图上设置范围:(下面的方法有封装)记一下思路就好 var pol ...

  7. Ubuntu下载

    由于官网服务器在国外,下载速度奇慢,所以我们可以利用阿里云镜像下载ubuntuubuntu 14.04:http://mirrors.aliyun.com/ubuntu-releases/14.04/ ...

  8. 前端使用node.js的http-server开启一个本地服务器

    前端使用node.js的http-server开启一个本地服务器 在写前端页面中,经常会在浏览器运行HTML页面,从本地文件夹中直接打开的一般都是file协议,当代码中存在http或https的链接时 ...

  9. ORA-12557协议适配器不可加载

    背景:以前电脑没有装ORACLE,仅是安装了简易客户端,此次想安装一个11g数据库,安装完成后用PLSQL登录,发现报错. 解决方案A:使用免安装的oracle客户端(instantclient_11 ...

  10. window.location.search 在url中有?name=value时仍为‘’的情况

    1,当页面有hash#值 而?name=value在hash #的串后面将会有这种结果 2,为什么 window.location.search 为空? 答:注意上面的search和hash的区别,如 ...