Java日期格式化

文章目录

  1. 1. 日期格式化
    1. 1.1. 前言
    2. 1.2. Date
      1. 1.2.1. 构造方法
      2. 1.2.2. 常用的方法
      3. 1.2.3. 实例
    3. 1.3. SimpleDateFormat
      1. 1.3.1. 构造方法
      2. 1.3.2. 常用的方法
      3. 1.3.3. 常用的日期格式化的模板
      4. 1.3.4. 实例
    4. 1.4. Calendar
      1. 1.4.1. 创建对象
      2. 1.4.2. 常用方法
      3. 1.4.3. 实例

日期格式化

前言

Date

Date类表示特定的瞬间精确到毫秒,不过从API可以看出很多的方法已经废弃了,这个类已经在过多使用了,不过还是需要了解一下的,为了后面的学习做铺垫

构造方法

  • new Date()

常用的方法

  • long getTime() 返回计算机上面的时间,返回的是毫秒
  • setTime(long s) 用给定的毫秒值s设置时间

实例

Date date=new Date();
System.out.println(date.getTime());

SimpleDateFormat

  • 这个类是一个简单的格式化日期的类,继承与DateFormat,相对于父类来说使用简单

构造方法

  • new SimpleDateFormat() 使用默认的格式化模板创建对象
  • new SimpleDateFormat(String pattern) 使用指定的格式化模板创建对象

常用的方法

  • String format(Date date) 将给定的日期格式化指定的模板的样式,比如2017-01-29 23:22:11
  • applyPattern(String pattern) 将给定的格式应用于此日期的格式,相当于直接使用new Date(String pattern)
  • Date parse(String d) 将给定的格式化的日期格式字符串转换成Date对象,需要注意的是转化的时候定义的模板一定要和字符串的日期格式的模板一样,否则将会解析不正确的形式

常用的日期格式化的模板

实例

  • 使用默认的模板格式化日期
SimpleDateFormat dateFormat=new SimpleDateFormat();   //默认的格式
String formateString=dateFormat.format(date);   //格式化当前的日期
System.out.println(formateString);

  • 使用指定的模板格式化日期
String model="yyyy-MM-dd-FF  HH:mm:ss";  //指定格式化的模板
SimpleDateFormat dateFormat2=new SimpleDateFormat(model);
System.out.println(dateFormat2.format(date));

  • 将格式化的日期转换成Date类型的,使用的parse(String s),需要注意的是,下面定义的模板一定要和给定的格式化后的日期格式一样,否则转换后Date类型的毫秒值可能不正确
      String d = "2017-06-12 22:34:19";   //给出格式化后的日期
String pattern = "yyyy-MM-dd HH:mm:ss";  //按照上面的日期格式定义模板,这个一定要完全和上面的一样,否则转换不正确
SimpleDateFormat dateFormat = new SimpleDateFormat(pattern);
try {
	Date date = dateFormat.parse(d);   //解析成Date类型
	System.out.println(dateFormat.format(date));
} catch (ParseException e) {
	System.err.println("解析错误");

}

  • 综合使用:计算时间差
Scanner scanner=new Scanner(System.in);
System.out.println("请输入年-月-日");
String startTime=scanner.next();
System.out.println("请输入结束时间(年-月-日)");
String endTime=scanner.next();
String moudle="yyyy-MM-dd";   //定义时间模板
//创建指定模板的解析
SimpleDateFormat dateFormat=new SimpleDateFormat(moudle);
Date startDate=dateFormat.parse(startTime);//解析开始时间
Date endDate =dateFormat.parse(endTime);//解析结束时间
long time=startDate.getTime()-endDate.getTime();  //返回两个时间的差,毫秒
int day=(int)(time/1000/60/60/24);  //转化为天数,1秒等于1000毫秒,一分钟等于60秒,一小时等于60分钟,一天等于24小时
System.out.println(day);

Calendar

Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。瞬间可用毫秒值来表示,它是距历元(即格林威治标准时间 1970 年 1 月 1 日的 00:00:00.000,格里高利历)的偏移量。

创建对象

  • Calendar.getInstance()

常用方法

  • int get(int field) 返回当前对象的一些日期信息
  • Date getTime() 获得当前日期的Date对象
  • add(int field,int amount) 根据日历的规则,为给定的日历字段添加或减去指定的时间量。例如,要从当前日历时间减去 5 天,可以通过调用以下方法做到这一点:add(Calendar.DAY_OF_MONTH, -5)
  • setTime(Date date) 使用给定的Date对象,设置Calendar时间

实例

  • get方法获取一些字段的值
      Calendar calendar = Calendar.getInstance(); // 创建对象
System.out.println(calendar.get(Calendar.YEAR));// 获取年份
System.out.println(calendar.get(Calendar.MONTH) + 1);// 月,从0开始,即是输出5表示6月
System.out.println(calendar.get(Calendar.DATE));// 获取一个月中的第几天
System.out.println(calendar.get(Calendar.HOUR)); // 小时
System.out.println(calendar.get(Calendar.MINUTE)); // 分钟
System.out.println(calendar.get(Calendar.SECOND)); // 秒
System.out.println(calendar.get(Calendar.AM_PM)); // 获得是上午还是下午AM=0,PM=1
System.out.println(calendar.get(Calendar.DAY_OF_MONTH)); // 一个月中的第几天
System.out.println(calendar.get(Calendar.DAY_OF_WEEK)); // 一周中的第几天,星期日是第一天
System.out.println(calendar.get(Calendar.DAY_OF_YEAR));// 一年中的第几天
System.out.println(calendar.get(Calendar.HOUR_OF_DAY)); // 一天中的第几小时

if (calendar.get(Calendar.AM_PM) == Calendar.AM) {
	System.out.println("现在是上午");
}

if (calendar.get(Calendar.MONTH) + 1 == Calendar.JULY) {
	System.out.println("现在是6月");
}

  • Date getTime()方法的使用
Calendar calendar=Calendar.getInstance();
Date date=calendar.getTime();   //获得Date对象
String pattern="yyyy-MM-dd  HH:mm:ss";
SimpleDateFormat dateFormat=new SimpleDateFormat(pattern);
System.out.println(dateFormat.format(date));

  • add(int field,int amount)方法的使用
      Calendar calendar=Calendar.getInstance();
calendar.add(Calendar.DATE, -2);
System.out.println(calendar.get(Calendar.DATE));

  • 综合实例:计算出当前的准确日期
      Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(calendar.MONTH) + 1; // 从0开始算,因此加1
int date = calendar.get(Calendar.DATE);
int week = calendar.get(Calendar.WEEK_OF_MONTH) + 1; // 从周日开始算,因此加1
int hour = calendar.get(Calendar.HOUR);
int minute = calendar.get(Calendar.MINUTE);
int seconds = calendar.get(Calendar.SECOND);
if (calendar.get(Calendar.AM_PM) == Calendar.AM) {

	System.out.println("现在是" + year + "年" + month + "月" + date + "号"
			+ "星期" + week + "上午" + hour + "点" + minute + "分" + seconds
			+ "秒");

} else {
	System.out.println("现在是" + year + "年" + month + "月" + date + "号"
			+ "星期" + week + "下午" + hour + "点" + minute + "分" + seconds
			+ "秒");
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Java IO学习笔记七

    爱撒谎的男孩
  • Hibernate的基本配置

    爱撒谎的男孩
  • Nginx之location详解

    3、一旦配置请求location映射到了指定的位置,那么下面全部的文件夹和文件都可以映射到,不需要在配置对其的映射,比如,但是如果使用其中的文件名重新映射了地址...

    爱撒谎的男孩
  • java学习:日期的运算

    java.util.Date下的很多(构造)方法,已经被标识为"过时"方法,官方推荐使用Calendar类来处理日期的运算,下面是示例: import java...

    菩提树下的杨过
  • 20个高级Java面试题汇总

    这是一个高级Java面试系列题中的第一部分。这一部分论述了可变参数,断言,垃圾回收,初始化器,令牌化,日期,日历等等Java核心问题。

    Java后端工程师
  • 20个高级Java面试题汇总

    这是一个高级Java面试系列题中的第一部分。这一部分论述了可变参数,断言,垃圾回收,初始化器,令牌化,日期,日历等等Java核心问题。

    Java后端工程师
  • 20个高级Java面试题汇总

    这是一个高级Java面试系列题中的第一部分。这一部分论述了可变参数,断言,垃圾回收,初始化器,令牌化,日期,日历等等Java核心问题。

    Java团长
  • 《Java从入门到放弃》JavaSE入门篇:练习——单身狗租赁系统

    我们把之前使用数组做的这个单身狗系统改版成数据库版本,并且使用面向对象里面的一些简单思想。

    十方上下
  • 《Java从入门到放弃》JavaSE入门篇:练习——单身狗租赁系统

    十方上下
  • JDBC读取SciDB数据

    SciDB一个典型的Array Database,官网地址:http://www.paradigm4.com/,提供了C++,Java,Python和R的接口。

    卡尔曼和玻尔兹曼谁曼

扫码关注云+社区

领取腾讯云代金券