如果有机会,请尝试Java8中全新的时间日期API!(参见Java8新特性随笔)

  如果还是使用Java7及之前的版本,那么你可以尝试一些工具类(参考使用工具类相关的Hutool-DateUtil)

  如果又不能升级JDK,又无法引入第三方依赖库,那么你可以需要了解以下的时间日期相关的API(无奈之举)

一、常用日期类

  

二、System类

  我们比较常用的时间相关的方法:

  

  我们这里特别注意一下它的定义:返回的是与1970.1.1的时间差(单位:毫秒),由这个定义我们也容易知道它一般不单独使用(意义不大),

  最常见的用途就是:计算时间差:

public static void main(String[] args) {
long start = System.currentTimeMillis();
for (int i = 0; i<100; i++) {
if (i % 2 == 0) {
System.out.println("左青龙");
} else {
System.out.println("右白虎");
}
}
long end = System.currentTimeMillis();
System.out.println("用时(ms):"+ (end - start));
}

三、Date类

  1.构造方法(过时方法不再赘述)

  

  实例化Date:(已重写toString())

  public static void main(String[] args) {
// 通过构造器构建Date实例
Date date1 = new Date();
System.out.println(date1);// Thu Sep 14 20:32:16 CST 2017
}

  //使用long型有参构造请带上后缀L(new Date(13807966980L))

  2.常用方法(可以看到API中很多方法都已经过时)

  getTime()——返回对应的毫秒数

   public static void main(String[] args) {
// 通过构造器构建Date实例
Date date1 = new Date();
System.out.println(date1.getTime());//
}

四、SimpleDateFormat

  由于Date类不利于国际化,已经由java.text包(实际上与格式化和解析的类基本都在此包下)下的SimpleDateFormat替代,

  作为一个与语言环境有关的方式来格式化和解析日期的具体类

  1.构造方法:

  

    也可以解析例如Sep等的英文缩写月份!

   

   2.常用方法:(用于解析与格式化)

  format(Date date)——格式化,将日期格式化为字符串

  pattern格式详解可以参见API(常用:yyyy-MM-dd HH:mm:ss)

public static void main(String[] args) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
// 格式化
String s = sdf.format(new Date());
System.out.println(s);// 2017-09-14
}

  parse(String str)——解析,将字符串解析为日期

  public static void main(String[] args) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
// 解析
try {
Date date = sdf.parse("2008-8-8");
System.out.println(date);// Fri Aug 08 00:00:00 CST 2008
} catch (ParseException e) {
e.printStackTrace();
}
}

五、Calendar

  主要用于完成字段之间的相互操作的一个抽象基类

  1.构造方法(由于是抽象类,无法直接new)

  

  2.常用方法

    get(int field)——获取字段的方法

  

  其中涉及的属性可以参见API的属性列表,其中的注意点:

MONTH月份从0开始,也就是1-12月对应 0-11,在Calender中有常量,如Calender.MAY等常量来表示!

DAY_OF_WEEK从1开始,也就是周日到周六对应 1-7

  实例:

 public static void main(String[] args) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Calendar c;
// 解析
try {
Date date = sdf.parse("2017-9-14 21:42:18");
// 使用Date作为参数初始化日历类
c = Calendar.getInstance();
c.setTime(date);
// 验证日历设置的时间是否生效
String s = sdf.format(c.getTime());
System.out.println(s);
/*通过日历对日期进行字段的操作,获取年月日,操作年月日等*/
// 显示年份
int year = c.get(Calendar.YEAR);
System.out.println("年份:"+year);
// 显示月份(从0开始)
int month = c.get(Calendar.MONTH);
System.out.println("月份:"+month);
// 周几(从周日(对应1)开始)
int weekDay = c.get(Calendar.DAY_OF_WEEK);
System.out.println("周几:"+weekDay);
// 本月第N天
int day = c.get(Calendar.DAY_OF_MONTH);
System.out.println("本月第几天:"+day);
/*利用日历操作日期*/
// 2小时后
c.add(Calendar.HOUR_OF_DAY, 2);
int hour = c.get(Calendar.HOUR_OF_DAY);
System.out.println("2小时后:"+hour);
// 15分钟前
c.add(Calendar.MINUTE, -15);
int min = c.get(Calendar.MINUTE);
System.out.println("15分钟前:"+min);
// 重置为当前时间
c.setTime(new Date());
Date now = c.getTime();
String s1 = sdf.format(now);
System.out.println("当前时间:"+s1);
} catch (ParseException e) {
e.printStackTrace();
}

  结果:

  

Java基础——常用类之日期时间类的更多相关文章

  1. 日期类时间类,日期时间类,单例模式,装箱与拆箱,数字类随机数,BigDecimal总结

    1.日期类,时间类,日期时间类 初步日期使用方法及格式转换方法(旧方法): 格式://Mon Jul 30 11:26:05 CST 2018             年月日时分秒    CST代表北 ...

  2. Java 之 JDK1.8之前日期时间类

    一.JDK1.8之前日期时间类 二. java.lang.System类 System类提供的public static long currentTimeMillis()用来返回当前时间与1970年1 ...

  3. Object类、日期时间类、system类及StringBuilder字符串容器

    一.Object类常用API 1.1 概述 java.lang.Object类是Java语言中的根类,即所有类的父类.Object类中描述的所有方法子类都可以使用.在对象实例化的时候,最终找的父类就是 ...

  4. Java 基础 常用API ( 正则表达式,Date类,DateFormat类,Calendar类 )

    正则表达式 正则表达式的概念 正则表达式(英语:Regular Expression,在代码中常简写为regex). 正则表达式是一个字符串,使用单个字符串来描述.用来定义匹配规则,匹配一系列符合某个 ...

  5. java_Object类、日期时间类、System类、包装类

    Object类 java.lang.Object 类是所有类的父类.它描述的所有方法子类都可以使用.在对象实例化的时候,最终找的父类就是Object. 如果一个类没有特别指定父类, 那么默认则继承自O ...

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

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

  7. java 数据结构(三):java常用类 三 日期时间API

    JDK 8之前日期时间API 1.获取系统当前时间:System类中的currentTimeMillis()long time = System.currentTimeMillis();//返回当前时 ...

  8. Java日期时间类

    日期时间类有三种: 一.java.util.Date:一般用于声明日期时间类型的变量. 二.java.sql.Date:一般用于数据库日期时间的映射. 三.java.util.Calendar:一般用 ...

  9. 常用类(日期时间格式转换,date,枚举)

    1 常用类 1.1 日期时间类 计算机如何表示时间? 时间戳(timestamp):距离特定时间的时间间隔. 计算机时间戳是指距离历元(1970-01-01 00:00:00:000)的时间间隔(ms ...

随机推荐

  1. Nginx 配置多站点vhost

    假设你想在Linux Nginx中用不同的域名访问不同的目录,这时就要配置多个vhost,具体配置如下,假设网站根目录设定在/var/www/ 1.在/var/www/下新建两个目录 /var/www ...

  2. mocha、chai、sinon和istanbul实现100%单元测试覆盖率

    敏捷软件开发中,最重要实践的就是测试驱动开发,在单元测试层面,我们试着实现一个重要的指标就是测试覆盖率.测试覆盖率衡量我们的代码是否已经全部被测试到了. 但是指标本身不是目的,借助测试覆盖率检查,我们 ...

  3. mysql group replication观点及实践

    一:个人看法 Mysql  Group Replication  随着5.7发布3年了.作为技术爱好者.mgr 是继 oracle database rac 之后. 又一个“真正” 的群集,怎么做到“ ...

  4. C#中关于增强类功能的几种方式

    C#中关于增强类功能的几种方式 本文主要讲解如何利用C#语言自身的特性来对一个类的功能进行丰富与增强,便于拓展现有项目的一些功能. 拓展方法 扩展方法被定义为静态方法,通过实例方法语法进行调用.方法的 ...

  5. python基础_类型_str

    #python不用考虑变量,可随时变换,自动分配内存,比如a = 'jjj'后a = 123是可以的 #str 文本 字符串 #常用函数 a = ' abcefg \n' a.strip() #去掉前 ...

  6. iOS设计模式 - 代理

    iOS设计模式 - 代理 原理图 说明 1. 代理模式大家都用过,但用抽象基类NSProxy实现代理估计鲜有人用 2. 本人用NSProxy实现了代理模式,对于理解消息转发机制有点帮助 源码 http ...

  7. How To create extension in Hybris(创建Hybris的扩展)

    How To create extension in Hybris What is an extension? An extension is an encapsulated piece of the ...

  8. 以太坊系列之一: 以太坊RLP用法-以太坊源码学习

    RLP (递归长度前缀)提供了一种适用于任意二进制数据数组的编码,RLP已经成为以太坊中对对象进行序列化的主要编码方式.RLP的唯一目标就是解决结构体的编码问题:对原子数据类型(比如,字符串,整数型, ...

  9. PHP字符串——简单应用

    错误的学习编码语言观点:语言语法不用记,多练习就可以了.   应该是死记住,然后加强练习以免忘记.以及在练习中加强理解.试着想“为什么是这样的语法习惯”.PHP提供了8种数据类型.4种是标量型(单值) ...

  10. Mysql索引详解及优化(key和index区别)

    MySQL索引的概念    索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针.更通俗的说,数据库索引好比是一本书前面的目录,能加快数据库 ...