如果有机会,请尝试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. leetCode题解之Product of Array Except Self

    1.题目描述 2.题目分析 每个元素对应的积应该是 它 前面的每个元素的积,和后面的每个元素的积 3.代码 vector<int> productExceptSelf(vector< ...

  2. Oracle EBS 查询客户报错 查询已超出 200 行。可能存在更多的行,请限制查询。

  3. MYSQL 5.7 sqlmode 行为

    最近碰到了sql_mode 的一些问题,故进行了研究,根据实际情况研究其行为. sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ER ...

  4. C# DataGridview用NPOI导出Excel文件

    导出excel我用的是nuget 的NPOI,直接在项目中添加的,引用到项目中,下面是截图: 下面我把ExcelHelper贴出来 public static class ExcelHelper { ...

  5. [翻译] CHTCollectionViewWaterfallLayout

    CHTCollectionViewWaterfallLayout https://github.com/chiahsien/CHTCollectionViewWaterfallLayout CHTCo ...

  6. 编译并导入OpenSSL

    编译并导入OpenSSL 1. 首先,需要运行脚本生成OpenSSL库,参考 https://github.com/x2on/OpenSSL-for-iPhone 示例 2. 运行脚本生成静态库 下一 ...

  7. 虚拟机上的Linux Java开发环境部署记录(VirtualBox+Ubuntu)第一章-基础环境搭建

    创建虚拟机时需注意三点: 在BIOS中开启Intel VT,以支持64位虚拟机系统: 对于Ubuntu 16以上版本,至少分配10G以上初始控件. 增加一块网卡,选择Host-Only网络,用于主机和 ...

  8. wordpress利用rsync同步备份

    我搭建的wordpress服务器现在使用的系统是opensuse, 服务器上面已做脚本和计划任务将wordpress使用的数据库与web目录每天压缩备份放到 /data/backup目录下 opera ...

  9. 装office系统软件

    在电脑里搜索 SW_DVD5_Office_Professional_Plus_2010w_SP1_64Bit_ChnSimp_CORE_MLF_X17-76742 如果已经安装过了,有错误,直接进行 ...

  10. Spfa(最短路求解)

    spfa(最短路求解) 模板: #include<iostream> #include<cstdio> #include<queue> #include<cs ...