`

Date Timestamp Calendar String的转换

    博客分类:
  • Date
 
阅读更多

import java.sql.Timestamp;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

import org.apache.commons.lang.time.DateFormatUtils;


/**
 * $Id: DateUtils.java 2450 2006-11-03 03:16:53Z robin $
 * 
 * @author robin
 * 
 */
public class DateUtils {
	public static final long ONE_DAY_LONG = 86400000;
	private static DateUtils classInstance = new DateUtils();

	public static DateUtils getInstance() {
		return classInstance;
	}

	
	/**
	 * Timestamp时间类型转换String
	 *  Created on 2014-6-6 
	 * <p>Discription:[]</p>
	 * @author:[]
	 * @update:[日期YYYY-MM-DD] [更改人姓名]
	 * @param time
	 * @param pattern
	 * @return String
	 */
	public static String timestamp2string(Timestamp time, String pattern) {
		Date d = new Date(time.getTime());

		if (pattern == null) {
			pattern = "yyyy-MM-dd HH:mm:ss";
		}
		return DateFormatUtils.format(d, pattern);
	}

	/**
	 * Date时间类型转换String
	 *  Created on 2014-6-6 
	 *  时间格式yyyy-MM-dd HH:mm
	 * @param date
	 * @param pattern
	 * @return String
	 */
	public static String formatDate(Date date, String pattern) {
		if (date == null) {
			date = new Date(System.currentTimeMillis());
		}

		if (pattern == null) {
			pattern = "yyyy-MM-dd HH:mm";
		}
		return DateFormatUtils.format(date, pattern);
	}
	
	/**
	 * date传null获取当前时间
	 * 时间格式yyyy-MM-dd HH:mm
	 *  Created on 2014-6-6 
	 * @param date
	 * @return String
	 */
	public static String defaultFormat(Date date) {
		return formatDate(date, null);
	}

	/**
	 * 获取当前时间Date类型
	 *  Created on 2014-6-6 
	 * @return Date
	 */
	public static Date parseDateFormat() {
		SimpleDateFormat fo = new SimpleDateFormat();
		Date date = new java.util.Date(System.currentTimeMillis());
		fo.applyPattern("yyyy-MM-dd");

		try {
			date = fo.parse(DateFormatUtils.format(date, "yyyy-MM-dd"));
		} catch (Exception e) {
		}

		return date;
	}

	/**
	 * 根据Timestamp类型返回2014-06-06格式String
	 *  Created on 2014-6-6 
	 * @param time
	 * @return String
	 */
	public static String parseTimestampFormat(Timestamp time) {

		if (time != null && !time.equals("")) {

			return parseDateFormat(new Date(time.getTime()));

		} else {

			return "";
		}

	}

	/**
	 * 根据Date转换String格式yyyy-MM-dd
	 *  Created on 2014-6-6 
	 * @param date
	 * @return String
	 */
	public static String parseDateFormat(Date date) {
		SimpleDateFormat fo = new SimpleDateFormat();
		fo.applyPattern("yyyy-MM-dd");
		String retVal = "0000-00-00";
		try {
			retVal = DateFormatUtils.format(date, "yyyy-MM-dd");
		} catch (Exception e) {
		}

		return retVal;
	}

	/**
	 * 根据String返回Timestamp
	 *  Created on 2014-6-6 
	 * @param value
	 * @return Timestamp
	 */
	public static Timestamp formatFromYYYYMMDD(String value) {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		Date date = null;
		try {
			date = sdf.parse(value);
		} catch (ParseException e) {
			return null;
		}
		return new Timestamp(date.getTime());
	}
	
	public static Timestamp formatFromYYYYMMDDhhmmss(String value) {
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		Date date = null;
		try {
			date = sdf.parse(value);
		} catch (ParseException e) {
			return null;
		}
		return new Timestamp(date.getTime());
	}

	public static Date string2Date(String str) {
		if (StringUtils.isEmpty(str))
			return new Date();
		return java.sql.Date.valueOf(str);
	}

	public static boolean between(Date srcDate, Date startDate, Date endDate) {
		if (startDate.after(srcDate))
			return false;
		if (endDate.before(srcDate))
			return false;
		return true;
	}

	public static Date getDayStart(Date date) {
		return string2Date(divideDateForDay(date, "yyyy-MM-dd", 0));
		// return Timestamp.valueOf(formatDate(date, "yyyy-MM-dd")+" 00:00:00");
	}
	
	/**
	 * 根据传入时间在追加一天
	 *  Created on 2014-6-6 
	 * @param date
	 * @return
	 */
	public static Date getDayEnd(Date date) {
		return string2Date(divideDateForDay(date, "yyyy-MM-dd", 1));
		// return Timestamp.valueOf(formatDate(date, "yyyy-MM-dd")+" 23:59:59");
	}

	/**
	 * 给指定时间 追加天数
	 *  Created on 2014-6-6 
	 * @param date  
	 * @param pattern   显示格式
	 * @param num       需要加的天数
	 * @return
	 */
	public static String divideDateForDay(Date date, String pattern, int num) {
		if (date == null)
			date = new Date(System.currentTimeMillis());
		if (pattern == null)
			pattern = "yyyy-MM-dd HH:mm";
		Calendar cal = null;
		SimpleDateFormat fo = new SimpleDateFormat();
		fo.applyPattern(pattern);
		try {
			fo.format(date);
			cal = fo.getCalendar();
			cal.add(Calendar.DATE, num);
		} catch (Exception e) {
		}
		return fo.format(cal.getTime());
	}

	/**
	 * 算出两个时间的相差天数
	 *  Created on 2014-6-6 
	 * @param dateBegin
	 * @param dateEnd
	 * @return
	 */
	public static int subtrationDate(Date dateBegin, Date dateEnd) {

		GregorianCalendar gc1 = new GregorianCalendar(dateBegin.getYear(),
				dateBegin.getMonth(), dateBegin.getDate());
		GregorianCalendar gc2 = new GregorianCalendar(dateEnd.getYear(),
				dateEnd.getMonth(), dateEnd.getDate());
		// the above two dates are one second apart
		Date d1 = gc1.getTime();
		Date d2 = gc2.getTime();
		long l1 = d1.getTime();
		long l2 = d2.getTime();
		long difference = l2 - l1;
		int date = (int) (difference / 24 / 60 / 60 / 1000);
		return date;

	}

	// 当前日期前几天或者后几天的日期
	public static Date afterNDay(int n) {
		Calendar c = Calendar.getInstance();
		c.setTime(new Date());
		c.add(Calendar.DATE, n);
		Date d2 = c.getTime();
		return d2;
	}

	// 当前日期前几天或者后几天的日期
	public static Date afterNDays(Timestamp time, int n) {
		Calendar c = Calendar.getInstance();
		c.setTimeInMillis(time.getTime());
		c.add(Calendar.DATE, n);
		Date d2 = c.getTime();
		return d2;
	}

	public static Timestamp transDate(Date date) {
		if (date != null) {
			long time = date.getTime();
			return new Timestamp(time);
		}
		return null;
	}

	public static Date transTimestamp(Timestamp time) {
		if (time != null) {
			long t = time.getTime();
			return new Date(t);
		}
		return null;
	}

	// 时间段的第一个时间
	public static java.sql.Timestamp stringToTime1(String d) {
		java.sql.Timestamp t = null;
		SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");

		Date d1;
		try {
			if (StringUtils.isNotEmpty(d)) {
				d1 = df.parse(d);
				t = new Timestamp(d1.getTime());
			}
		} catch (ParseException e) {
			e.printStackTrace();
		}
		return t;
	}

	// 时间段的第二个时间
	public static java.sql.Timestamp stringToTime2(String d) {
		java.sql.Timestamp t = null;
		if (StringUtils.isNotEmpty(d)) {
			t = Timestamp.valueOf(d + " 23:59:59");
		}
		return t;
	}

	public static Calendar getYesterDayBegin() {
		Calendar before = Calendar.getInstance();

		before
				.set(Calendar.DAY_OF_MONTH,
						before.get(Calendar.DAY_OF_MONTH) - 1);
		before.set(Calendar.HOUR_OF_DAY, 0);
		before.set(Calendar.MINUTE, 0);
		before.set(Calendar.SECOND, 0);
		before.set(Calendar.MILLISECOND, 0);

		return before;
	}

	/**
	 * 查看昨天的日期  还需要调用transCalendarToTimestamp方法
	 *  Created on 2014-6-6 
	 * @return
	 */
	public static Calendar getYesterDayEnd() {
		Calendar after = Calendar.getInstance();
		after.set(Calendar.DAY_OF_MONTH, after.get(Calendar.DAY_OF_MONTH) - 1);
		after.set(Calendar.HOUR_OF_DAY, 23);
		after.set(Calendar.MINUTE, 59);
		after.set(Calendar.SECOND, 59);
		after.set(Calendar.MILLISECOND, 999);
		return after;
	}
	
	/**
	 * Calendar和Timestamp转换
	 * @param cal
	 * @return
	 */
	public static Timestamp transCalendarToTimestamp(Calendar cal)
	{
		Timestamp ts = new Timestamp(cal.getTimeInMillis());
		return ts;
	}

	/**
	 * 根据Timestamp类型参数  返回年后两位月日(例如:140606)
	 *  Created on 2014-6-6 
	 * @param time
	 * @return String
	 */
	public static String transTimestamptostr(Timestamp time) {
		if (time != null) {

			java.util.Calendar c = Calendar.getInstance();
			c.setTime(time);
			String year = String.valueOf(c.get(c.YEAR));
			String month = String.valueOf(c.get(c.MONTH) + 1);
			String day = String.valueOf(c.get(c.DATE));

			if (month.length() < 2)
				month = "0" + month;
			if (day.length() < 2)
				day = "0" + day;
			return year.substring(2, 4) + month + day;

		}
		return null;
	}
	
	/**
	 * 根据Calendar日历返回String
	 *  Created on 2014-6-6 
	 * @param cal
	 * @return
	 */
	public static String getDataString(Calendar cal)
	{
		Calendar now=cal;
		String time=now.get(Calendar.YEAR)+"-"+(now.get(Calendar.MONTH)+1)+"-"+now.get(Calendar.DAY_OF_MONTH)+" "+now.get(Calendar.HOUR_OF_DAY)+":"+now.get(Calendar.MINUTE)+":"+now.get(Calendar.SECOND);
		return time;
	}
	
	
	public static Calendar parseCalendarDate(String date) {
		Calendar d11 = new GregorianCalendar();
		Date d1 = null;
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");// 时间格式自己设置
		try { // 一定要放到try里面,不然会报错的
			d1 = sdf.parse(date);
		} catch (Exception e) {
		}

		d11.setTime(d1); // OK了,d11就是结果了
		return d11;
	}
	
	public static Timestamp calendar2Timestamp(Calendar cal){
		return new Timestamp(cal.getTimeInMillis());
	}
	
	public static String getDatePath(){
		return DateHelper.CalendarToStrByMark(Calendar.getInstance(), "yyyyMMdd");
	}
	public static String getDatePath(Calendar cal,String pattern){
		if(pattern==null){
			pattern="yyyy-MM-dd hh:mm:ss";
		}
		SimpleDateFormat sf=new SimpleDateFormat(pattern);
		return sf.format(cal.getTime());
	}
	public static String getDateTimePath(){
		return DateHelper.CalendarToStrByMark(Calendar.getInstance(), "yyyyMMddHHmmss");
	}
	
	//Date转化为Calendar
	public static Calendar date2Calendar(Date d){	
		Calendar cal=Calendar.getInstance();
		cal.setTime(d);
		return cal;
	}
	
	/**
	 * 日期比较是否相等
	 * @param d1
	 * @param d2
	 * @param type 比较方式,complete,date,
	 * @return boolean
	 * @author zhou jun
	 */
	public static boolean compere(Date d1, Date d2, String type)
	{
		if(type.equals("date")){
			String pattern = "yyyy-MM-dd";
			String date1 = formatDate(d1, pattern);
			String date2 = formatDate(d2, pattern);
			//System.out.println(date1+date2);
			if(date1.equals(date2)){
				return true;
			}
			return false;
		}
		else
		{
			return d1.equals(d2);
		}
	}
	
	/** 
     * 功能: 将日期对象按照某种格式进行转换,返回转换后的字符串 
     *  
     * @param date 日期对象 
     * @param pattern 转换格式 例:yyyy-MM-dd
     * @author yanhechao 
     */  
    public static String DateToString(Date date, String pattern) {  
        String strDateTime = null;  
        SimpleDateFormat formater = new SimpleDateFormat(pattern);  
        strDateTime = date == null ? null : formater.format(date);  
        return strDateTime;  
    }  
}

分享到:
评论

相关推荐

    String、Calendar、Date间的相互转换

    ### String、Calendar、Date间的相互转换 在Java中,日期和时间处理是非常常见的需求之一,尤其是在涉及用户界面或数据处理的应用程序中。本篇将详细解释如何在`String`、`Calendar`、`Date`之间进行转换,并提供...

    有关java中的Date,String,Timestamp之间的转化问题

    Java 中的 Date、String 和 Timestamp 之间的转换问题 Java 中的日期和时间处理是编程中非常重要的一方面,Date、String 和 Timestamp 是三种常用的日期和时间类型,本文将详细介绍它们之间的转换问题。 一、获取...

    实例讲解String Date Calendar之间的转换

    在Java编程中,日期和时间处理是常见的任务,涉及到多种数据类型间的转换,如String、Date和Calendar。本文将详细讲解这些类型之间的转换方法,帮助开发者更好地理解和运用。 1. **Calendar转String** `Calendar`...

    Java中Date,Calendar,Timestamp的区别以及相互转换与使用

    Java中的Date、Calendar和Timestamp是处理日期和时间的三个核心类,它们各有特点,并且在不同的场景下有各自的优势。接下来我们将深入探讨这三个类的区别、转换方法及其在实际使用中的应用。 1. **java.util.Date**...

    java时间转换大全

    String dateString = formatter.format(dateDate); return dateString; } public static String dateToStrShort(java.util.Date dateDate) { SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");...

    Date日期时间 各种转换

    在Java中,处理日期时间主要依赖于以下几个类:`java.util.Date`, `java.text.SimpleDateFormat`, `java.util.Calendar`, `java.sql.Timestamp`等。这些类提供了丰富的API来处理日期时间的转换、格式化以及计算等...

    java.util.Date与java.sql.Date互转及字符串转换为日期时间格式[文].pdf

    可以使用Calendar类来获取当前时间,然后将其转换为java.sql.Timestamp: Calendar calendar = Calendar.getInstance(); java.sql.Timestamp timestamp = new java.sql.Timestamp(calendar.getTimeInMillis()); 四...

    java时间处理工具类--DateUtils

    /** * @(#)DateUtil.java * ... public static Date strToDate(String dateStr, String format) { Date date = null; if (dateStr != null && (!dateStr.equals(""))) { DateFormat df ...

    关于PreparedStatement插入Date类型值的方法.txt

    Timestamp timestamp = Timestamp.valueOf(dateString); pstmt.setTimestamp(1, timestamp); ``` #### 三、总结 当在Java应用程序中使用`PreparedStatement`向数据库插入日期数据时,选择合适的方法非常重要。...

    Date的Java源代码

    Date specificTime = new Date(timestamp); ``` 这里通过传递一个具体的毫秒值来创建一个表示过去或未来某个具体时刻的 `Date` 对象。 ### 3. 获取和设置日期 #### 3.1 获取时间戳 ```java long timestamp = now....

    JAVA时间处理类

    public static Date stringToFormatDate(String date, String formmat) { try{ return getFormatter(formmat).parse(date); }catch(Exception e){ return null; } } /** * 日付の正確性チェック * *...

    Androd时间戳转化

    要将时间戳转换为Android系统可识别的日期和时间,可以使用`java.util.Date`类的构造函数或`Calendar`类。例如,以下代码将时间戳转化为`Date`对象: ```java long timestamp = 1643582400000L; // 一个示例...

    Java 时间工具类

    - **`public static String DateToString(Date date, String pattern)`** - 功能:将日期对象按照指定的格式转换为字符串。 - 参数: - `date`: 日期对象。 - `pattern`: 转换格式,例如 `"yyyy-MM-dd"`。 - ...

    DateUtil(日期工具类)

    `toTimestamp(Date date)`方法将日期转换为Unix时间戳,而`fromTimestamp(long timestamp)`则从时间戳创建日期对象。 7. **日期区间操作** `dateRange(Date startDate, Date endDate)`可能返回一个日期集合,包含...

    java 日期帮助类

    - `toDate(long timestamp)`:将时间戳转换为日期。 10. **日期格式化和解析**: - `parseDateWithLenient(String dateStr, String pattern)`:宽松模式下解析日期字符串。 - `parseDateStrictly(String dateStr...

    Java DateUtil时间工具类

    - `toTimestamp(Date date)`: 将`Date`对象转换为Unix时间戳。 7. **处理闰年和月份天数**: - `isLeapYear(int year)`: 判断是否为闰年。 - `getDaysInMonth(int month, int year)`: 获取指定年份的某个月份有...

    Struts中使用Util时日期的处理(源码)

    在描述中提到的"Util与sql日期格式的处理"可能指的是将数据库中的日期(如SQL的DATE、TIMESTAMP类型)与Java中的日期对象进行转换。 在Java中,日期和时间通常由`java.util.Date`类表示,而Struts的Util类可能指的...

    xfire测试项目(包括复杂数据类型)

    public java.util.Calendar getCalendar(java.util.Calendar a); public java.sql.Timestamp getTimestamp(java.sql.Timestamp a); public java.sql.Date getSDate(java.sql.Date a); public java.sql.Time getTime...

    iOS 倒计时 时间转换

    在iOS中,时间戳(Unix时间戳)转换为`Date`对象,或者`NSString`(日期字符串)转换为`NSDate`(在Swift中通常使用`Date`代替)是常见的需求。这里有一个例子: ```swift // 时间戳转Date let timestamp = ...

    Android关于获取时间的记录(小结)

    String calendar_show_string = "Calendar:" + year + "-" + (month + 1) + "-" + day + " " + hour + ":" + minute + ":" + second; TextView calendar_show = findViewById(R.id.calendar_show); calendar_show....

Global site tag (gtag.js) - Google Analytics