项目中经常需要将DateTime转化成各种格式的String类型,或将各种类型的String转为DateTime类型。

  本文提供一个DateTime与String的转换工具类:

import org.apache.commons.lang3.StringUtils;
import org.joda.time.DateTime;
import org.joda.time.DateTimeZone;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter; import java.util.Date;
import java.util.TimeZone; public class DateTimeUtils { private static final DateTimeFormatter fmt_yyyyMMddHHmmssSSS = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss.SSS");
private static final DateTimeFormatter fmt_yyyyMMddHHmmss = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");
private static final DateTimeFormatter fmt_yyyyMMddHHmm = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm");
private static final DateTimeFormatter fmt_yyyyMMdd = DateTimeFormat.forPattern("yyyy-MM-dd");
private static final DateTimeFormatter fmt_HHmmss = DateTimeFormat.forPattern("HH:mm:ss");
private static final DateTimeFormatter fmt_HHmm = DateTimeFormat.forPattern("HH:mm"); private static final DateTimeFormatter fmt_yyyyMMddHHmmss_noSplit = DateTimeFormat.forPattern("yyyyMMddHHmmss");
private static final DateTimeFormatter fmt_yyyyMMddHHmm_noSplit = DateTimeFormat.forPattern("yyyyMMddHHmm");
private static final DateTimeFormatter fmt_yyyyMMdd_noSplit = DateTimeFormat.forPattern("yyyyMMdd");
private static final DateTimeFormatter fmt_HHmmss_noSplit = DateTimeFormat.forPattern("HHmmss");
private static final DateTimeFormatter fmt_HHmm_noSplit = DateTimeFormat.forPattern("HHmm"); private static final DateTimeFormatter fmt_YYYYMMDDHHMM = DateTimeFormat.forPattern("yyyyMMdd HH:mm"); private static final DateTimeZone timeZone = DateTimeZone.forTimeZone(TimeZone.getTimeZone("GMT+8")); public static String fmtYyyyMMddHHmmss(DateTime d) {
return fmt_yyyyMMddHHmmss.print(d.withZone(timeZone));
} public static String fmtYyyyMMddHHmm(DateTime d) {
return fmt_yyyyMMddHHmm.print(d.withZone(timeZone));
} public static String fmtYyyyMMdd(DateTime d) {
return fmt_yyyyMMdd.print(d.withZone(timeZone));
} public static String fmtHHmmss(DateTime d) {
return fmt_HHmmss.print(d.withZone(timeZone));
} public static String fmtHHmm(DateTime d) {
return fmt_HHmm.print(d.withZone(timeZone));
} // 无分隔符
public static String fmtYyyyMMddHHmmss_noSplit(DateTime d) {
return fmt_yyyyMMddHHmmss_noSplit.print(d.withZone(timeZone));
} public static String fmtYyyyMMddHHmm_noSplit(DateTime d) {
return fmt_yyyyMMddHHmm_noSplit.print(d.withZone(timeZone));
} public static String fmtYyyyMMdd_noSplit(DateTime d) {
return fmt_yyyyMMdd_noSplit.print(d.withZone(timeZone));
} public static String fmtHHmmss_noSplit(DateTime d) {
return fmt_HHmmss_noSplit.print(d.withZone(timeZone));
} public static String fmtHHmm_noSplit(DateTime d) {
return fmt_HHmm_noSplit.print(d.withZone(timeZone));
} public static DateTime parseYyyyMMddHHmmssSSS(String str) {
DateTime d = fmt_yyyyMMddHHmmssSSS.parseDateTime(str);
return d;
} public static DateTime parseYyyyMMddHHmmss(String str) {
DateTime d = fmt_yyyyMMddHHmmss.parseDateTime(str);
return d;
} public static DateTime parseYyyyMMddHHmm(String str) {
DateTime d = fmt_yyyyMMddHHmm.parseDateTime(str);
return d;
} public static DateTime parseYYYYMMDDHHMM(String str) {
DateTime d = fmt_YYYYMMDDHHMM.parseDateTime(str);
return d;
} public static DateTime parseYyyyMMdd(String str) {
DateTime d = fmt_yyyyMMdd.parseDateTime(str);
return d;
} public static DateTime parseHHmmss(String str) {
DateTime d = fmt_HHmmss.parseDateTime(str);
return d;
} public static DateTime parseHHmm(String str) {
DateTime d = fmt_HHmm.parseDateTime(str);
return d;
} public static DateTime parseYyyyMMddHHmmss_noSplit(String str) {
DateTime d = fmt_yyyyMMddHHmmss_noSplit.parseDateTime(str);
return d;
} public static DateTime parseYyyyMMddHHmm_noSplit(String str) {
DateTime d = fmt_yyyyMMddHHmm_noSplit.parseDateTime(str);
return d;
} public static DateTime parseYyyyMMdd_noSplit(String str) {
DateTime d = fmt_yyyyMMdd_noSplit.parseDateTime(str);
return d;
} public static DateTime parseHHmmss_noSplit(String str) {
DateTime d = fmt_HHmmss_noSplit.parseDateTime(str);
return d;
} public static DateTime parseHHmm_noSplit(String str) {
DateTime d = fmt_HHmm_noSplit.parseDateTime(str);
return d;
} /**
* 判断被测试的日期是否在两个给定的日期范围内。
*
* @param testDate 被测试的日期
* @param startDate 开始日期
* @param endDate 结束日期
* @return
*/
public static boolean isInDateRange(DateTime testDate, DateTime startDate, DateTime endDate) { if (testDate == null) {
return false;
} if (startDate == null && endDate == null) {
return true;
} if (startDate != null && endDate == null) {
return (testDate.compareTo(startDate) >= 0);
} if (startDate == null && endDate != null) {
return (testDate.compareTo(endDate) <= 0);
} if (startDate != null && endDate != null) {
return ((testDate.compareTo(startDate) >= 0) && (testDate.compareTo(endDate) <= 0));
} return false;
} public static DateTime plusSeconds(Date date, int seconds) {
return toDateTime(date).plusSeconds(seconds);
} public static DateTime toDateTime(Date date) {
if (date == null) {
return null;
}
return new DateTime().withMillis(date.getTime());
} public static String format2String(Date date, String pattern) {
if (date == null || StringUtils.isEmpty(pattern)) {
return null;
}
DateTime datetime = formatDate2DT(date);
return format2String(datetime, pattern);
} public static DateTime formatDate2DT(Date date) {
if (date == null) {
return null;
}
return DateTime.now().withMillis(date.getTime());
} public static String format2String(DateTime time, String pattern) {
if (time == null || StringUtils.isEmpty(pattern)) {
return null;
}
return time.toString(pattern);
}
}

第二章 DateTime工具类的更多相关文章

  1. Netty源码分析第8章(高性能工具类FastThreadLocal和Recycler)---->第1节: FastThreadLocal的使用和创建

    Netty源码分析第八章: 高性能工具类FastThreadLocal和Recycler 概述: FastThreadLocal我们在剖析堆外内存分配的时候简单介绍过, 它类似于JDK的ThreadL ...

  2. 第一章 Java工具类目录

    在这一系列博客中,主要是记录在实际开发中会常用的一些Java工具类,方便后续开发中使用. 以下的目录会随着后边具体工具类的添加而改变. 浮点数精确计算 第二章 Java浮点数精确计算 crc32将任意 ...

  3. Java第二章----对象和类

    从第一章到第二章整整隔了一个月的时间,这速度也是慢的无语了.因为这个月负责开发公司一个SaaS类型APP,忙的昏天暗地终于上线了,这才有时间写个博客.本章还是以概念为主,有点枯燥重在理解. 第一节:对 ...

  4. Netty源码分析第8章(高性能工具类FastThreadLocal和Recycler)---->第2节: FastThreadLocal的set方法

    Netty源码分析第八章: 高性能工具类FastThreadLocal和Recycler 第二节: FastThreadLocal的set方法 上一小节我们学习了FastThreadLocal的创建和 ...

  5. Netty源码分析第8章(高性能工具类FastThreadLocal和Recycler)---->第7节: 获取异线程释放的对象

    Netty源码分析第八章: 高性能工具类FastThreadLocal和Recycler 第七节: 获取异线程释放的对象 上一小节分析了异线程回收对象, 原理是通过与stack关联的WeakOrder ...

  6. C# DateTime 工具类

    项目gitHub地址 点我跳转 今天给大家带来一个C#里面的时间工具类,具体的直接看下面代码 using System; namespace ToolBox.DateTimeTool { public ...

  7. Netty源码分析第8章(高性能工具类FastThreadLocal和Recycler)---->第3节: recycler的使用和创建

    Netty源码分析第八章: 高性能工具类FastThreadLocal和Recycler 第三节: recycler的使用和创建   这一小节开始学习recycler相关的知识, recycler是n ...

  8. Netty源码分析第8章(高性能工具类FastThreadLocal和Recycler)---->第4节: recycler中获取对象

    Netty源码分析第八章: 高性能工具类FastThreadLocal和Recycler 第四节: recycler中获取对象 这一小节剖析如何从对象回收站中获取对象: 我们回顾上一小节demo的ma ...

  9. Netty源码分析第8章(高性能工具类FastThreadLocal和Recycler)---->第5节: 同线程回收对象

    Netty源码分析第八章: 高性能工具类FastThreadLocal和Recycler 第五节: 同线程回收对象 上一小节剖析了从recycler中获取一个对象, 这一小节分析在创建和回收是同线程的 ...

随机推荐

  1. knockout+bootstrap+MVC 登录页实现

    一.环境概述 1.MVC4.0项目 2.bootstrap引入: 生产环境版本引入:在web\Content 文件夹中引入bootstrap-3.2.0-dist, 源码版本CSS引入:将bootst ...

  2. bzoj4130: [PA2011]Kangaroos

    Description 定义两个区间互相匹配表示这两个区间有交集. 给出长度为N的区间序列A,M次询问,每次询问序列A中最长的连续子序列,使得子序列中的每个区间都与[L,R]互相匹配 N<=50 ...

  3. jQuery使用load方法加载其他文档内容

    A文档载入B文档的内容,并且通过JQ操作被引入到A文档中的元素 A文档 (index.html): <!DOCTYPE html> <html lang="en" ...

  4. JAVA虚拟机垃圾回收算法原理

    除了释放不再被引用的对象外,垃圾收集器还要处理堆碎块.新的对象分配了空间,不再被引用的对象被释放,所以堆内存的空闲位置介于活动的对象之间.请求分配新对象时可能不得不增大堆空间的大小,虽然可以使用的总空 ...

  5. iOS 关于GCD中的队列

    GCD中队列分类及获得方式 1.串行队列  dispatch_queue_t queue = dispatch_queue_create("队列名", DISPATCH_QUEUE ...

  6. NPOI系列

    NPOI(1):Asp.net操作Excel NPOI(2):基础 NPOI格式设置 设置Excel的自动筛选功能 Npoi导出xlsx Npoi读取xlsx

  7. [HTML] CSS3 圆角

    使用 CSS3 border-radius 属性,你可以给任何元素制作 "圆角". CSS3 border-radius 属性 使用 CSS3 border-radius 属性,你 ...

  8. 分析Tornado的协程实现

    转自:http://www.binss.me/blog/analyse-the-implement-of-coroutine-in-tornado/ 什么是协程 以下是Wiki的定义: Corouti ...

  9. winform建立非矩形窗体

    非规则窗体可能会需要加的功能代码: 1:因为没有了最上边的标题栏,所以需要加窗体鼠标拖动功能,在Form里面加如下代码: #region 移动窗体 // 移动窗体 const int WM_NCLBU ...

  10. Android UI 绘制过程浅析(二)onMeasure过程

    前言 View的绘制过程分为 measure.layout.draw三个步骤,接下来对这三个步骤逐一进行研究. measure方法的签名 public final void measure(int w ...