`
阅读更多

以前的博客“Java中的日期常用格式化”提到的都是当前日期的格式化,这篇博客写指定日期的格式化。当然类似于前一篇博客的内容就不多写了,写一些不一样的,如一个月的总天数,两个日期之间相隔的天数,字符串类型日期的格式化等。

废话不多说,上代码:

public class TimeTest {

	/**
	 * 获取指定日期的年份
	 * @throws ParseException 
	 * **/
	public static Integer year(String strDate){
		int year = 0;
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); 
		Calendar calendar = new GregorianCalendar();
		try{
			Date date1 = sdf.parse(strDate); 
			calendar.setTime(date1); //放入日期 
			year = calendar.get(Calendar.YEAR);
		}catch(ParseException e){
			e.printStackTrace();
		}
		return year;
	}
	
	/**
	 * 获取指定日期的月份
	 * @throws ParseException 
	 * **/
	public static Integer month(String strDate){
		int month = 0;
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); 
		Calendar calendar = new GregorianCalendar();
		try{
			Date date1 = sdf.parse(strDate); 
			calendar.setTime(date1); //放入日期 
			month = calendar.get(Calendar.MONTH)+1;
		}catch(ParseException e){
			e.printStackTrace();
		}
		return month;
	}
	
	/**
	 * 获取指定日期的天
	 * @throws ParseException 
	 * **/
	public static Integer day(String strDate){
		int day = 0;
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); 
		Calendar calendar = new GregorianCalendar();
		try{
			Date date1 = sdf.parse(strDate); 
			calendar.setTime(date1); //放入日期 
			day = calendar.get(Calendar.DAY_OF_MONTH);
		}catch(ParseException e){
			e.printStackTrace();
		}
		return day;
	}
	
	/**
	 * 获取指定日期所在月份的天数
	 * @throws ParseException 
	 * **/
	public static Integer getActualMaximum(String strDate){
		int max = 0;
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM"); 
		Calendar calendar = new GregorianCalendar();
		try{
			Date date1 = sdf.parse(strDate); 
			calendar.setTime(date1); //放入日期 
			max = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
		}catch(ParseException e){
			e.printStackTrace();
		}
		return max;
	}
	
	/**
	 * 将字符串类型的日期进行格式化,返回格式化之后字符串类型的日期
	 * @param String strDate:字符串格式的日期
	 * @return 字符串类型格式化后的日期,如:2016.06.05 
	 * **/
	public static String formatStringDateToYYYYMMDD(String strDate){
		if (strDate == null) 
            return ""; 
        SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");// 实例化模板对象  
        SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy.MM.dd");// 实例化模板对象  
        Date d = null ;  
        try{  
            d = sdf1.parse(strDate) ; // 将给定的字符串中的日期提取出来  
        }catch(Exception e){ // 如果提供的字符串格式有错误,则进行异常处理  
            e.printStackTrace() ;// 打印异常信息 
            e.printStackTrace();
        }  
        return sdf2.format(d);//按照规定格式进行格式化
	}
	
	/**
	 * 返回两个日期之间相差的天数,当date2>=date1时返回正数,否则返回负数
	 * @param date1:String类型 时间1
	 * @param date2:String类型 时间2
	 * @return days:返回date1和date2之间相差的天数
	 * */
	public static int dateDiff(String date1, String date2){
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); 
		Calendar calendar1 = new GregorianCalendar();
		Calendar calendar2 = new GregorianCalendar();
		try{
			calendar1.setTime(sdf.parse(date1));
			calendar2.setTime(sdf.parse(date2));
		}catch(ParseException e){
			e.printStackTrace();
		}
		
		 //设置时间为0时   
		 calendar1.set(Calendar.HOUR_OF_DAY, 0);   
		 calendar1.set(Calendar.MINUTE, 0);   
		 calendar1.set(Calendar.SECOND, 0);   
		 calendar2.set(Calendar.HOUR_OF_DAY, 0);   
		 calendar2.set(Calendar.MINUTE, 0);   
		 calendar2.set(Calendar.SECOND, 0); 
		 
		//得到两个日期相差的天数   
		 int days = ((int)(calendar2.getTime().getTime()/1000)-(int)(calendar1.getTime().getTime()/1000))/3600/24;   
		return days;   
	}
	
	/**
	 * 返回指定年份月份的最后一天的时间
	 * @param strDate:要返回该月最后一天的字符串日期,必须包括年月
	 * */
	public static String getLastDayEndForMonth(String strDate){
		String time="";
		int lastDay = getActualMaximum(strDate);//获取日期的所在月份的天数
		int year = year(strDate);//获取年份
		int month = month(strDate);//获取月份
		time = year+"-"+month+"-"+lastDay+" 23:59:59";
		
		SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		Date date = null;
		try{
			date = df.parse(time);
		}catch(ParseException e){
			e.printStackTrace();
		}
		return df.format(date);
	}
	
	/**
	 * 返回指定年份月份的第一天的时间
	 * @param strDate:要返回该月最后一天的字符串日期,必须包括年月
	 * */
	public static String getFirstDayEndForMonth(String strDate){
		String time="";
		int year = year(strDate);//获取年份
		int month = month(strDate);//获取月份
		time = year+"-"+month+"-01 00:00:00.0";
		
		SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		Date date = null;
		try{
			date = df.parse(time);
		}catch(ParseException e){
			e.printStackTrace();
		}
		return df.format(date);
	}
	
	public static void main(String[] args) throws ParseException {
		System.out.println("年份:"+year("2016-06-16 00:00:00.000"));
		System.out.println("月份:"+month("2016-06-16 00:00:00.000"));
		System.out.println("天:"+day("2016-06-16 00:00:00.000"));
		System.out.println("6月的总天数:"+getActualMaximum("2016-06-16 00:00:00.000"));
		System.out.println("字符串类型的日期格式化:"+formatStringDateToYYYYMMDD("2016-06-16 00:00:00.000"));
		System.out.println("获取两个日期之间相差的天数:"+dateDiff("2016-06-16 00:00:00.000","2015-03-21 00:00:00.000"));
		System.out.println("指定年份月份的最后一天的时间:"+getLastDayEndForMonth("2016-06-16 00:00:00.000"));
		System.out.println("指定年份月份的第一天的时间:"+getFirstDayEndForMonth("2016-03-02 00:00:00.000"));
	}
}

 

 

分享到:
评论

相关推荐

    Java的日期格式化常用方法

    本文将深入探讨Java中日期格式化的常用方法,主要关注`SimpleDateFormat`和`java.time`包下的`DateTimeFormatter`。 首先,`SimpleDateFormat`是旧版日期时间API的一部分,尽管在Java 8之后被推荐使用新的`java....

    java日期格式化

    Java日期格式化是Java开发中常见的一项任务,它涉及到日期和时间的处理,尤其是在数据输入输出、用户界面显示以及数据库交互等场景。Java提供了一系列的类来帮助我们完成日期和时间的格式化工作,其中最常用的包括`...

    java格式化日期类

    为了方便开发者,Java提供了多种方式来格式化日期,其中最常用的是`java.text.SimpleDateFormat`类。这个工具类允许我们自定义日期和时间的显示格式,避免了重复编写相同的代码。下面将详细介绍如何使用`...

    java数据格式化

    Java数据格式化是Java编程语言中处理数据呈现和解析的核心技术之一,主要涉及对文本、日期、数值等数据类型的格式化处理,以适应不同的显示需求和国际化标准。本文将深入探讨Java数据格式化的关键概念、类和方法,...

    java日期格式化工具类

    java日期格式化工具类,一些常用的日期操作方法

    Java常用日期辅助类

    在`DateHelper.java`这个自定义的日期辅助类中,通常会包含一些便捷的方法,例如获取当前日期,格式化日期,进行日期计算(如加上或减去指定天数、小时数等),或者转换`java.util.Date`和`java.time`包之间的日期...

    Java日期常用操作方法工具类

    本文将重点讲解Java日期的常用操作方法,主要基于提供的`JavaDateUtil.java`文件,假设这是一个自定义的日期工具类。 首先,我们来了解`java.util.Date`。这个类在早期的Java版本中被广泛使用,但它的API设计并不...

    Java中对日期的常用处理(转)

    总结起来,Java中对日期的处理涵盖了多种场景,从基本的日期对象创建、格式化、比较,到复杂的日期时间计算和时区处理。`DateUtil.java`可能封装了这些常见操作,方便在项目中复用。了解并熟练掌握这些知识点,对于...

    JAVA处理日期时间常用方法

    Java中的日期和时间处理是程序开发中常见的任务,涉及到各种日期和时间的计算、格式化以及比较等操作。在Java中,主要使用`java.util.Date`、`java.util.Calendar`和`java.text.SimpleDateFormat`这三个核心类来处理...

    Java中日期处理的代码

    在 Java 中处理日期时,我们需要导入一些必要的包来支持日期时间的格式化、解析等功能。示例代码中导入了如下几个关键的包: - `java.text.ParsePosition`:用于跟踪解析过程中的位置。 - `java.text....

    Android-Java中的日期转化格式DateUtil工具类

    `DateUtil`工具类通常包含了对日期进行格式化、解析、比较等常用功能,使得在Android项目中处理日期变得更加便捷。 在Java中,日期对象主要由`java.util.Date`类表示,而日期格式化则依赖于`java.text....

    java字符串格式化String.format()

    ### Java字符串格式化String.format()详解 #### 一、引言 `String.format()` 方法是JDK 1.5引入的新特性,它提供了一种灵活且强大的方式来格式化字符串。这种方法类似于C语言中的`printf`函数,允许开发者通过指定...

    java swing 时间日期选择控件

    标签“java日期控件”强调了这个主题关注的是Java中与日期选择相关的控件,不仅仅是Swing,也可能是JavaFX或其他库提供的日期选择组件。但在这里,我们主要讨论的是Swing环境下的实现。 在压缩包的"swing 时间控件...

    Java字符串_日期_数字格式化输出

    #### 三、Java日期格式化输出 在处理日期时间时,经常需要将日期对象转换为特定格式的字符串,或者从字符串解析出日期对象。 1. **默认日期格式化**:通过 `java.text.DateFormat` 类可以获取到默认的日期格式化器...

    Java日期时间格式化操作DateUtils 的整理

    Java 日期时间格式化操作是 Java 开发中最常用的操作之一。DateUtils 是一个工具类,提供了多种日期时间格式化操作的方法。在这里,我们将对 DateUtils 的整理进行详细介绍,并总结了 Java 日期格式化的操作。 ...

    java中的日期处理类总结

    Java中的日期处理涉及到多个类,包括Date、Calendar、GregorianCalendar以及日期格式化类如DateFormat和SimpleDateFormat。这些类主要用于管理、操作和格式化日期和时间。以下是对这些类的详细说明: 1. **Date类**...

    java李兴华学习笔记之Java常用类库

    - **日期格式化**:利用SimpleDateFormat或DateTimeFormatter类对日期进行格式化处理。 - **Random类**:生成随机数,可用于模拟各种随机事件。 **示例代码**: ```java import java.text.SimpleDateFormat; import...

    java里日期的用法汇总

    ### Java里日期的用法汇总 #### 一、获取当前日期与时间 ...以上就是关于Java中日期使用的总结,涵盖了日期的获取、格式化、加减操作以及其他相关操作。希望这些知识点能够帮助你更好地理解和使用Java中的日期功能。

    深入理解Java:SimpleDateFormat安全的时间格式化

    在Java中,SimpleDateFormat是一个非常常用的类,用来对日期字符串进行解析和格式化输出。但是,如果使用不小心会导致非常微妙和难以调试的问题,因为DateFormat和SimpleDateFormat类不是线程安全的。在多线程环境下...

    java 日期选择控件DateChooser

    在Java开发中,DateChooser控件可以使用第三方库来实现,比如JCalendar库中的JDateChooser,它是一个常用的日期选择组件,提供了丰富的功能和良好的兼容性。开发者只需将JCalendar库导入项目,然后在需要的地方实例...

Global site tag (gtag.js) - Google Analytics