⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dateutil.java

📁 struts spring ibatis
💻 JAVA
字号:
package com.struts2.framework.util;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;


public class DateUtil {
	private static Object timeZoneLock = new Object();

	private static String timeZoneList[][] = null;

	private static Map dateFormatCache = new HashMap();

	/**
	 * 取得指定日期增加/减少(n为负数时)n天后的日期
	 * @param date
	 * @param n
	 * @return
	 */
	public static Date add(Date date,int n) {
		if(date == null) return null;
		GregorianCalendar gc = new GregorianCalendar();
		gc.setTime(date);
		gc.add(Calendar.DATE,n);
		return gc.getTime();
	}
	
	/**
	 * 取得当前日期增加/减少(n为负数时)n天后的日期
	 * @param n
	 * @return
	 */
	public static Date add(int n) {
		return add(new Date(),n);
	}
	
	/**
	 * 根据指定日期格式将给出的日期字符串dateStr转换成一个日期对象
	 * @param dateStr
	 * @param pattern
	 * @return
	 */
	public static Date parseDate(String dateStr,String pattern) {
		if(dateStr == null || dateStr.length()==0 || pattern == null || pattern.length() == 0) return null;
		DateFormat fmt = new SimpleDateFormat(pattern);
		Date result = null;
		try {
			result = fmt.parse(dateStr);
		} catch (ParseException e) {
			e.printStackTrace();
		}
		return result;
	}
	
	/**
	 * 将特定格式(yyyy-MM-dd HH:mm:ss)的字符串转换成日期对象
	 * @param dateStr
	 * @return
	 */
	public static Date parseDate(String dateStr) {
		return parseDate(dateStr,"yyyy-MM-dd HH:mm:ss");
	}
	
	/**
	 * 将特定格式(yyyy-MM-dd)的字符串转换成日期对象
	 * @param dateStr
	 * @return
	 */
	public static Date parseShortDate(String dateStr) {
		return parseDate(dateStr,"yyyy-MM-dd");
	}
	
	public static String asHtml(Date d) {
		return asHtml(d, TimeZone.getDefault());
	}
	
	public static String asHtml(Date date, TimeZone timeZone) {
		String key = timeZone.getID();
		DateFormat formatter = (DateFormat) dateFormatCache.get(key);
		if (formatter == null) {
			formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
			formatter.setTimeZone(timeZone);
			dateFormatCache.put(key, formatter);
		}
		synchronized (formatter) {
			String s = formatter.format(date);
			return s;
		}
	}

	public static String asString(Date date) {
		String key = "asString";
		DateFormat formatter = (DateFormat) dateFormatCache.get(key);
		if (formatter == null) {
			formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
			dateFormatCache.put(key, formatter);
		}
		return formatter.format(date);
	}

	public static String asShortString(Date date) {
		DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
		return formatter.format(date);
	}

	public static String asShortString(Date date, TimeZone timeZone) {
		DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
		formatter.setTimeZone(timeZone);
		return formatter.format(date);
	}

	public static String asNameSuffix(Date date, TimeZone timeZone) {
		DateFormat formatter = new SimpleDateFormat("yyyy_MM_dd");
		formatter.setTimeZone(timeZone);
		return formatter.format(date);
	}

	public static Date getDate(int time) {
		return new Date((long) time * 1000L);
	}

	public static int currentTimeSeconds() {
		return (int) (System.currentTimeMillis() / 1000L);
	}

	public static int secondsAfter(Date a, Date b) {
		return (int) ((a.getTime() - b.getTime()) / 1000L);
	}

	public static int secondsBefore(Date a, Date b) {
		return secondsAfter(b, a);
	}

	public static Date getDate(int yy, int mm, int dd) {
		return (new GregorianCalendar(yy, mm - 1, dd)).getTime();
	}

	public static int unixTimeStamp() {
		return (int) (System.currentTimeMillis() / 1000L);
	}

	public static int unixTimeStamp(Date date) {
		return (int) (date.getTime() / 1000L);
	}

	public static String[][] getTimeZoneList() {
		synchronized (timeZoneLock) {
			if (timeZoneList == null) {
				Date now = new Date();
				String timeZoneIDs[] = TimeZone.getAvailableIDs();
				timeZoneList = new String[timeZoneIDs.length][2];
				for (int i = 0; i < timeZoneList.length; i++) {
					String zoneID = timeZoneIDs[i];
					timeZoneList[i][0] = zoneID;
					timeZoneList[i][1] = getTimeZoneName(zoneID, now, Locale
							.getDefault());
				}

			}
		}
		return timeZoneList;
	}

	private static String getTimeZoneName(String zoneID, Date now, Locale locale) {
		TimeZone zone = TimeZone.getTimeZone(zoneID);
		StringBuffer buf = new StringBuffer();
		int offset = zone.getRawOffset();
		if (zone.inDaylightTime(now) && zone.useDaylightTime())
			offset = (int) ((long) offset + 0x36ee80L);
		if (offset < 0)
			buf.append("(GMT-");
		else
			buf.append("(GMT+");
		offset = Math.abs(offset);
		int hours = offset / 0x36ee80;
		int minutes = (offset % 0x36ee80) / 60000;
		if (hours < 10)
			buf.append("0").append(hours).append(":");
		else
			buf.append(hours).append(":");
		if (minutes < 10)
			buf.append("0").append(minutes);
		else
			buf.append(minutes);
		buf.append(") ").append(zoneID).append(" ");
		buf.append(zone.getDisplayName(true, 0, locale));
		return buf.toString();
	}

	/**
	 * 测试方法
	 * @param args
	 */
	public static void main(String[] args) {
		Date date = new Date();
		System.out.println(asHtml(date));
		
		Date dt = parseDate("2005-10-21 23:20:11");
		System.out.println(DateUtil.asHtml(DateUtil.add(dt,-1000)));
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -