1. String 与 Date互转
    (1)基于SimpleDateFormat实现:

    package com.bky.df;
    
    import java.text.ParseException;
    import java.text.ParsePosition;
    import java.text.SimpleDateFormat;
    import java.util.Date; public class DateLangUtils{
    public static void main(String[] args) throws ParseException {
    Date nowDate = new Date();
    String formatString = "yyyy-MM-dd HH:mm:ss";
    String dateString = "2018-12-02 16:33:15";
    System.out.println(getString(nowDate, formatString));
    System.out.println(getDate(dateString, formatString));
    System.out.println(getDatePos(dateString, formatString));
    } /**
    * 使用SimpleDateFormat格式化Date
    *
    * @param date
    * @param formatString
    * @return
    */
    public static String getString(Date date, String formatString) {
    SimpleDateFormat formatter = new SimpleDateFormat(formatString);
    return formatter.format(date);
    } /**
    * 使用SimpleDateFormat解析日期字符串
    *
    * @param dateString
    * @param formatString
    * @return
    * @throws ParseException
    */
    public static Date getDate(String dateString, String formatString) throws ParseException {
    SimpleDateFormat formatter = new SimpleDateFormat(formatString);
    return formatter.parse(dateString);
    } /**
    * 使用SimpleDateFormat解析日期字符串
    *
    * @param dateString
    * @param formatString
    * @return
    */
    public static Date getDatePos(String dateString, String formatString) {
    SimpleDateFormat formatter = new SimpleDateFormat(formatString);
    return formatter.parse(dateString, new ParsePosition(0));
    }
    }

    (2)使用commons组件实现

    import java.text.ParseException;
    import java.util.Date; import org.apache.commons.lang3.time.DateFormatUtils;
    import org.apache.commons.lang3.time.DateUtils; public static void main(String[] args) throws ParseException {
    Date nowDate = new Date();
    String formatString = "yyyy-MM-dd HH:mm:ss";
    String dateString = "2018-12-02 16:33:15";
    System.out.println(DateFormatUtils.format(nowDate, formatString));
    System.out.println(DateUtils.parseDate(dateString, formatString));
    }
  2. 对日期的相关操作
    基于Calendar实现
    Calendar cal = Calendar.getInstance();
    // 设置Calendar时间(1.Date 2.longofmills)
    cal.setTime(new Date());
    cal.setTimeInMillis(System.currentTimeMillis()); // 设置年月日,时分秒,毫秒
    cal.set(Calendar.YEAR, cal.get(Calendar.YEAR));
    // Calendar.MONTH 从0开始表示1月,需要转换展示/设置
    cal.set(Calendar.MONTH, cal.get(Calendar.MONTH));
    cal.set(Calendar.DAY_OF_MONTH, cal.get(Calendar.DAY_OF_MONTH));
    // 24小时制
    cal.set(Calendar.HOUR_OF_DAY, cal.get(Calendar.HOUR_OF_DAY));
    // 12小时制
    cal.set(Calendar.HOUR, cal.get(Calendar.HOUR));
    cal.set(Calendar.MINUTE, cal.get(Calendar.MINUTE));
    cal.set(Calendar.SECOND, cal.get(Calendar.SECOND));
    cal.set(Calendar.MILLISECOND, cal.get(Calendar.MILLISECOND)); // 设置与星期相关参数
    // 设置当周星期周几(1为星期日,7为星期六)
    cal.set(Calendar.DAY_OF_WEEK, cal.get(Calendar.DAY_OF_WEEK));
    // 设置当月第几个星期(默认地区是从星期日开始算,以日历计算第几周)
    cal.set(Calendar.WEEK_OF_MONTH, cal.get(Calendar.WEEK_OF_MONTH));
    // 设置当月第几个星期(设置按当月的天数算第几周,7天一周)
    cal.set(Calendar.DAY_OF_WEEK_IN_MONTH, cal.get(Calendar.DAY_OF_WEEK_IN_MONTH));
    // 设置一年中第几个星期
    cal.set(Calendar.WEEK_OF_YEAR, cal.get(Calendar.WEEK_OF_YEAR)); // 设置当月第一天
    cal.set(Calendar.DAY_OF_MONTH, cal.getActualMinimum(Calendar.DAY_OF_MONTH));
    cal.set(Calendar.HOUR_OF_DAY, 0);
    cal.set(Calendar.MINUTE, 0);
    cal.set(Calendar.SECOND, 0);
    cal.set(Calendar.MILLISECOND, 0); // 设置当月最后一天
    cal.set(Calendar.DAY_OF_MONTH, cal.getActualMaximum(Calendar.DAY_OF_MONTH));
    cal.set(Calendar.HOUR_OF_DAY, 0);
    cal.set(Calendar.MINUTE, 0);
    cal.set(Calendar.SECOND, 0);
    cal.set(Calendar.MILLISECOND, 0);
  3. 计算两个时间之差
        /**
    * 根据需要计算并格式化两个时间之差
    *
    * @param beforeDate
    * @param afterDate
    * @param formatPatterns(长度一定要为6,如果不需要则传null)
    * eg:new String[]{ "年", null, "天", "时", "分", "秒" }
    * @return
    */
    public static String formatDistanceDate(Date beforeDate, Date afterDate, String[] formatPatterns) {
    if (formatPatterns == null || formatPatterns.length < 6)
    return "";
    long instance = (afterDate.getTime() - beforeDate.getTime()) / 1000;
    StringBuilder dateInstanceFormatBuffer = new StringBuilder();
    if (formatPatterns[0] != null) {
    long year = instance / (3600l * 24 * 365);
    if (year > 0) {
    dateInstanceFormatBuffer.append(year);
    dateInstanceFormatBuffer.append(formatPatterns[0]);
    instance = instance % (3600l * 24 * 365);
    }
    }
    if (formatPatterns[1] != null) {
    long month = instance / (3600l * 24 * 30);
    if (month > 0) {
    instance = instance % (3600l * 24 * 30);
    dateInstanceFormatBuffer.append(month);
    dateInstanceFormatBuffer.append(formatPatterns[1]);
    }
    }
    if (formatPatterns[2] != null) {
    long day = instance / (3600l * 24);
    if (day > 0) {
    instance = instance % (3600l * 24);
    dateInstanceFormatBuffer.append(day);
    dateInstanceFormatBuffer.append(formatPatterns[2]);
    }
    }
    if (formatPatterns[3] != null) {
    long hour = instance / 3600;
    if (hour > 0) {
    instance = instance % 3600;
    dateInstanceFormatBuffer.append(hour);
    dateInstanceFormatBuffer.append(formatPatterns[3]);
    }
    }
    if (formatPatterns[4] != null) {
    long min = instance / 60;
    if (min > 0) {
    dateInstanceFormatBuffer.append(min);
    dateInstanceFormatBuffer.append(formatPatterns[4]);
    }
    }
    if (formatPatterns[5] != null) {
    long second = instance % 60;
    if (second > 0) {
    dateInstanceFormatBuffer.append(second);
    dateInstanceFormatBuffer.append(formatPatterns[5]);
    }
    }
    return dateInstanceFormatBuffer.toString();
    }

java 的Date 日期相关操作的更多相关文章

  1. Java基础 - Date的相关使用(获取系统当前时间)

    前言: 在日常Java开发中,常常会使用到Date的相关操作,如:获取当前系统时间.获取当前时间戳.时间戳按指定格式转换成时间等.以前用到的时候,大部分是去网上找,但事后又很快忘记.现为方便自己今后查 ...

  2. Java中Date各种相关用法

    Java中Date各种相关用法(一) 1.计算某一月份的最大天数 Java代码 Calendar time=Calendar.getInstance(); time.clear(); time.set ...

  3. java 线程 原子类相关操作演示样例 thinking in java4 文件夹21.3.4

    java 线程  原子类相关操作演示样例 package org.rui.thread.volatiles; import java.util.Timer; import java.util.Time ...

  4. Java日期相关操作

    1.获得日期 在旧版本 JDK 的时代,有不少代码中日期取值利用了 java.util.Date 类,但是由于 Date 类不便于实现国际化,其实从 JDK1.1 开始,就更推荐使用 java.uti ...

  5. Java 各种时间日期相关的操作

    目录 1.获取当前时间的时间戳 1.1.时间进制 1.2.获取毫秒级时间戳 1.3.获取纳秒级时间戳 2.java.util包 2.1.Data 2.2.Calendar 3.java.time包 3 ...

  6. JAVA日期——java.util.date类的操作

    package com.hxzy.time; import java.text.SimpleDateFormat;import java.util.Date; public class DateDem ...

  7. Java工具类——日期相关的类

    前言 在日常的开发工作当中,我们经常需要用到日期相关的类(包括日期类已经处理日期的类),所以,我就专门整理了一篇关于日期相关的类,希望可以帮助到大家. 正文 一.日期类介绍 在 Java 里面,操作日 ...

  8. java创建Date日期时间笔记

    (1)public Date() 创建的日期类对象的日期时间被设置成创建时刻相对应的日期时间. 例: Java代码 1.Date today=new Date();  //today被设置成创建时刻相 ...

  9. 数据结构Java实现04---树及其相关操作

    首先什么是树结构? 树是一种描述非线性层次关系的数据结构,树是n个数据结点的集合,这些集结点包含一个根节点,根节点下有着互相不交叉的子集合,这些子集合便是根节点的子树. 树的特点 在一个树结构中,有且 ...

随机推荐

  1. linux学习笔记2 - linux常用命令

    转载请标注原链接:http://www.cnblogs.com/xczyd/p/5543731.html 第一篇博客:linux学习笔记1-ubuntu的安装与基本设置 之中,已经介绍了如何安装lin ...

  2. 使用chromebook的记录

    taobao买的香港垃圾,Thinkpad 11e chromebook,评价:键盘还行吧,(比不上价格更低的Thinkpad x200,情理之中的事情),待机超强,电池健康80%,能干掉我周围的所有 ...

  3. Spark 灰度发布在十万级节点上的成功实践 CI CD

    原创文章,转载请务必将下面这段话置于文章开头处. 本文转发自技术世界,原文链接 http://www.jasongj.com/spark/ci_cd/ 本文所述内容基于某顶级互联网公司数万节点下 Sp ...

  4. 并发编程心得--synchronized

    根据业务需求解决并完善并发问题-- IWMS仓库系统不考虑并发那么大的情况下,我想到的有2种并发解决方案. 1.在同时请求时,给需要操作的保存接口添加synchronized 同步方式,同步保存方法, ...

  5. 小程序之hover-class

    hover-class 属性主要是用来来指定元素的点击态效果.但是在在使用中要注意,大部分组件是不支持该属性的. 目前支持 hover-class 属性的组件有三个:view.button.navig ...

  6. day08文件操作

    今日内容 文件操作 内容详细 1.打开文件 1.open("作业讲解.py",mode="r",encoding="utf-8") 2.文件 ...

  7. ES6的一些知识学习

    一.基础 ES6 - 类: class A{ constructor(name,color){ this.name = name; this.color = color; } toString(){ ...

  8. 基于C++的牛顿切线法演示

    牛顿切线法 中心思想: 利用目标函数二阶泰勒多项式的最优解作为函数的近似最优解.如果新的近似最优解满足计算精度,则终止计算,否则将函数在新点展开成二阶泰勒多项式,用新的泰勒多项式的最优解作为函数的近似 ...

  9. 闲记 单元格与单元格之间的边 ///字体属性都是font开头,除了颜色属性 ///文本属性都是text开的,除了设置行高。

    这两天一直在做网页没有什么太大的问题,期间也考了一场试,对答案的时候老师讲了一些小知识,因此来记录一下. 单元格与单元格之间的边距(cellspaling) list-type-image可以使用图像 ...

  10. JZ2440支持设备树(1)-添加设备树之后kernel的启动参数跟dts里面不一致

    在做之前参考了如下博客文章,再次非常感谢: http://www.cnblogs.com/pengdonglin137/p/6241895.html Uboot中需要在config中添加如下宏: #d ...