`
MouseLearnJava
  • 浏览: 460094 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

记录几个日期处理的小方法

    博客分类:
  • Java
阅读更多
记录几个日期处理的小方法

1. 不同日期格式之间的转化
2. 计算两个日期相差的天数
......

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

public final class DateUtil {

	private static final long MILLISECONDS_PER_DAY = 1L * 24 * 60 * 60 * 1000;

	private static final String DATE_FORMAT_YYYYMMDD = "yyyy-MM-dd";

	private static final String DATE_FORMAT_YYYYMMDDHHMMSS = "yyyy-MM-dd HH:mm:ss";

	private static final SimpleDateFormat df1 = new SimpleDateFormat(
			DATE_FORMAT_YYYYMMDD);

	private static final SimpleDateFormat df2 = new SimpleDateFormat(
			DATE_FORMAT_YYYYMMDDHHMMSS);

	private DateUtil() {
	}

	/**
	 * 根据给定的源日期的字符串内容和日期格式,返回一个以目标日期格式的字符串内容。
	 * 
	 * @param targetFormat
	 *            目标日期的格式
	 * @param sourceFormat
	 *            源日期的格式
	 * @param sourceDateString
	 *            源日期的字符串内容
	 * @return the string
	 * @throws ParseException
	 */
	public static String formatDateString(String targetFormat,
			String sourceFormat, String sourceDateString) {
		try {
			return new SimpleDateFormat(targetFormat)
					.format(new SimpleDateFormat(sourceFormat)
							.parse(sourceDateString));
		} catch (ParseException e) {
			// TODO
			return null;
		}
	}

	/**
	 * 返回两个日期相差的天数
	 */
	public static int getDiffInDays(Date startDate, Date endDate) {
		return (int) ((endDate.getTime() - startDate.getTime()) / MILLISECONDS_PER_DAY);
	}

	public static boolean isFutureDate(Date date) {
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(date);

		return calendar.after(Calendar.getInstance());
	}

	public static boolean isPastDate(Date date) {
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(date);

		return calendar.before(Calendar.getInstance());
	}

	public static Date now() {
		return new Date();
	}

	public static Date addDay(Date date, int days) {
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(date);
		calendar.add(Calendar.DAY_OF_YEAR, days);
		return calendar.getTime();
	}

	public static Date addMonth(Date date, int months) {
		Calendar calendar = Calendar.getInstance();
		calendar.setTime(date);
		calendar.add(Calendar.MONTH, months);
		return calendar.getTime();
	}

	public static Date addYear(Date date, int years) {

		Calendar calendar = Calendar.getInstance();
		calendar.setTime(date);
		calendar.add(Calendar.YEAR, years);
		return calendar.getTime();
	}

	public static String formatToYYYYMMDD(Date date) {
		return df1.format(date);
	}

	public static String formatToYYYYMMDDHHMMSS(Date date) {
		return df2.format(date);
	}

	public static String getFormatDateTime(Date date, String format) {
		DateFormat df = new SimpleDateFormat(format);
		return df.format(date);
	}

	public static boolean isLeapYear(Date date) {
		Calendar cal = Calendar.getInstance();
		cal.setTime(date);
		return isLeapYear(cal.get(Calendar.YEAR));
	}

	public static boolean isLeapYear(int year) {
		GregorianCalendar calendar = new GregorianCalendar();
		return calendar.isLeapYear(year);
	}

}

测试代码
import java.util.Date;

public class Test {
	public static void main(String[] args) {
		Date date = new Date();
		System.out.println(DateUtil.formatToYYYYMMDD(date));
		System.out.println(DateUtil.formatToYYYYMMDDHHMMSS(date));
		System.out.println(DateUtil.formatDateString("yyyy-MM-dd",
				"MM/dd/yyyy", "06/30/2013"));
	}
}


测试输出结果如下:
2013-07-02
2013-07-02 12:33:27
2013-06-30
0
2
分享到:
评论

相关推荐

    下拉列表日期

    jQuery.jSelectDate 0.1 - 下拉列表日期控件 ... 更新记录: Version 0.2 - 2008-1-24 1.加入了闰年、大小月和二...3.新增可设置是否在下拉列表后面加入“年、月、日”几个字 Version 0.1 - 2008-1-14 1.基本的功能实现

    基于SpringBoot的医院住院信息管理系统150912(附源码+数据库)

    医生分有几个科室(例如呼吸科,儿科,骨科,icu),科室有几个病房,病房有几个床位(病房有费用) 护士: 1.预约管理:对预约病人进行基本信息登记,修改,删除,查询(身份证号,姓名,性别,年龄,电话,住址,...

    javascript文档

    apply 方法 应用对象的一个方法,用当前对象代替另一对象。 arguments 属性 返回一个包含传递给当前执行函数的每个参数的数组。 Array 对象 提供对创建任何数据类型的数组的支持。 asin 方法 返回一个数的反正弦...

    JScript 语言参考

    apply 方法 应用对象的一个方法,用当前对象代替另一对象。 arguments 属性 返回一个包含传递给当前执行函数的每个参数的数组。 Array 对象 提供对创建任何数据类型的数组的支持。 asin 方法 返回一个数的反正弦...

    微软JavaScript手册

    apply 方法 应用对象的一个方法,用当前对象代替另一对象。 arguments 属性 返回一个包含传递给当前执行函数的每个参数的数组。 Array 对象 提供对创建任何数据类型的数组的支持。 asin 方法 返回一个数的反正弦...

    Sqlserver2000经典脚本

    ├─第02章 │ │ 2.1 日期概念理解中的一些测试.sql │ │ 2.2.4 CONVERT在日期转换中的使用示例.sql │ │ 2.3.3 SET DATEFORMAT对日期处理的影响.sql │ │ 2.3.4 SET LANGUAGE对日期处理...

    Android 全局捕获异常消息示例.rar

    android全局异常捕获,全局捕获异常消息示例,当程序发生Uncaught异常的... 包括有以下几个操作类:  日期工具类:实现了日期格式转化、获取各种日期的常用操作;  File工具类:主要封装了一些对文件读写的操作;

    TextPipe Pro 9.7.3 中文免费版 你的文本信息处理工具.zip

    没有两个文本处理任务都是一样的 – 只有TextPipe可以提供灵活性和令人难以置信的文字处理能力,以完成这项工作。 TextPipe Pro是文本处理应用程序,采用一组文件和应用一组操作或过滤器,以每个文件的转机。每个...

    C#全能速查宝典

    分别介绍了C#语言基础、Windows窗体及常用控件、Windows高级控件、控件公共属性、方法及事件、数据库开发、文件、数据流与注册表、GDI+绘图技术和C#高级编程,共包含562个C#编程中常用的属性、方法、类和各种技术,...

    SQL SERVER 2000开发与管理应用实例

    2.6.2 常见的低效率日期处理方法 52 2.6.3 日期与数字 53 第 3 章 字符处理 55 3.1 字符类型概述 55 3.2 字符串分拆 56 3.2.1 循环截取法 57 3.2.2 动态Transact-SQL语句法 57 3.2.3 辅助表法...

    php计算两个日期时间差(返回年、月、日)

    在PHP程序中,很多时候都会遇到处理时间的问题,比如:判断用户在线了多长时间,共登录了多少天,两个帖子发布的时间差或者是不同操作之间的日志记录等等。在文章中,简单地举例介绍了PHP中如何计算两个日期相差 年...

    JAVA毕业设计之springboot024企业客户管理系统的设计与实现(springboot+mysql)完整源码.zip

    项目的源代码主要包括以下几个部分:Controller层:负责处理用户请求,调用Service层的业务逻辑。Service层:负责处理业务逻辑,调用DAO层的数据操作。DAO层:负责操作数据库,包括数据的增删改查。Model层:负责...

    经典SQL脚本大全

    │ │ 5.1.1 SET IDENTITY_INSERT 中的几个问题.sql │ │ 5.1.1 修改标识值的示例.sql │ │ 5.1.1 标识列与普通列互相转换的示例.sql │ │ 5.2.1 查表法按日期生成流水号的示例.sql │ │ 5.2.1 查表法生成流水号...

    Python的time模块中的常用方法整理

    Python中提供了time, datetime calendar等模块来处理时间日期,今天对time模块中最常用的几个函数作一个介绍。 time.time time.time()函数返回从1970年1月1日以来的秒数,这是一个浮点数。 time.sleep 可以通过调用...

    java 算法

    多线程的世界时钟,显示巴黎,罗马,上海时间, AWT界面,Java日期格式化及其使用例子,几个常用方法,判断字符是否属于中文,异常处理类,去掉字符串中重复的子字符串,将指定byte数组以16进制的形式打印到控制台,...

    西南科技大学《python程序设计方法与实践》综合设计报告python大作业数据分析与可视化numpy、pandas....

    涨跌幅(p_change)和换手率(turnover)这几个属性,并按时间先后顺 序对数据进行排序; 2) 绘制出开盘价(open)和收盘价(close)的走势折线图,注意 X 轴绘制 字符重叠问题的处理; 3) 输出这一年内成交量...

    mysql的日期和时间函数

    注意,如果依着包含一个时间部分的间隔增加或减少一个日期值,该日期值将被自动地转换到一个日期时间值: mysql> SELECT DATE_ADD("1999-01-01", INTERVAL 1 DAY); -> 1999-01-02mysql> SELECT DATE_ADD("1999-01-...

    Java开发技术大全 电子版

    11.1.4几个常用术语332 11.2集合类的使用333 11.2.1顺序表(ArrayList)使用示例333 11.2.2链表(LinkedList)使用示例336 11.2.3优先队列(PriorityQueue)使用示例340 11.2.4哈希集合(HashSet)使用示例343 ...

    java-servlet-api.doc

    JavaTMservlets是一个不受平台约束的Java小程序,它可以被用来通过多种方法扩充一个Web服务器的功能。你可以把Servlet理解成Server上的applets,它被编译成字节码,这样它就可以被动态地载入并用效地扩展主机的处理...

Global site tag (gtag.js) - Google Analytics