浏览 6486 次
锁定老帖子 主题:java日期操作
该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2009-04-30
最后修改:2009-05-04
* Program : DateHelp.java * Author : Jsm * Create : 2009-04-30 * * Copyright 1995-1998,2000 by Global Data Solutions, * All rights reserved. * * This software is the confidential and proprietary information * of Global Data Solutions. ("Confidential Information"). You * shall not disclose such Confidential Information and shall use * it only in accordance with the terms of the license agreement * you entered into with Global Data Solutions. * */ package com.lingteng.date; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.ResourceBundle; import java.util.Locale; import java.util.Calendar; import org.apache.log4j.Logger; /** * Date Tools * * @Author: Jsm * @Create: 2009-04-30 * @Email: jsm_sun@sina.com * */ public class DateHelp { private static Logger log = Logger.getLogger(DateHelp.class); private static ResourceBundle resource = ResourceBundle.getBundle("resources.date", Locale.CHINA); private DateHelp() { } /** 获取日期格式 yyyy/MM/dd */ public static final int PATTERN_1 = 1; /** 获取日期格式 yyyy/MM/dd HH:mm:ss */ public static final int PATTERN_2 = 2; /** 获取日期格式 yyyy/MM/dd HH:mm:ss:sss */ public static final int PATTERN_3 = 3; /** 获取日期格式 yyyy-MM-dd */ public static final int PATTERN_4 = 4; /** 获取日期格式 yyyy-MM-dd HH:mm:ss */ public static final int PATTERN_5 = 5; /** 获取日期格式 yyyy-MM-dd HH:mm:ss:sss */ public static final int PATTERN_6 = 6; /** 获取年 */ public static final int PATTERN_7 = 7; /** 获取年终的月份 */ public static final int PATTERN_8 = 8; /** 获取年终的周数 */ public static final int PATTERN_9 = 9; /** 获取月份中的周数 */ public static final int PATTERN_10 = 10; /** 获取年中的天数 */ public static final int PATTERN_11 = 11; /** 获取月份中的天数 */ public static final int PATTERN_12 = 12; /** 获取月份中的星期 */ public static final int PATTERN_13 = 13; /** 获取星期中的天数 */ public static final int PATTERN_14 = 14; /** 获取一天中的小时数(0-23) */ public static final int PATTERN_15 = 15; /** 获取一天中的小时数(1-24) */ public static final int PATTERN_16 = 16; /** 获取am/pm 中的小时数(0-11) */ public static final int PATTERN_17 = 17; /** 获取am/pm 中的小时数(1-11) */ public static final int PATTERN_18 = 18; /** 获取小时中的分钟数 */ public static final int PATTERN_19 = 19; /** 获取分钟中的秒数 */ public static final int PATTERN_20 = 20; /** 获取毫秒数 */ public static final int PATTERN_21 = 21; /** * * @param date: * 格式化的日期, 如果日期为null, 则代表当前日期 * @param pattern: * 格式化的日期模式 * @return: 返回字符串日期的格式.如果发生异常或格式不存在返回null */ public static String getStringDate(Date date, int pattern) { String strDate = null; SimpleDateFormat sdf = new SimpleDateFormat(); String errMsg = null; if (date == null) date = new Date(); try { switch (pattern) { case PATTERN_1: sdf.applyPattern("yyyy/MM/dd"); break; case PATTERN_2: sdf.applyPattern("yyyy/MM/dd HH:mm:ss"); break; case PATTERN_3: sdf.applyPattern("yyyy/MM/dd HH:mm:ss:sss"); break; case PATTERN_4: sdf.applyPattern("yyyy-MM-dd"); break; case PATTERN_5: sdf.applyPattern("yyyy-MM-dd HH:mm:ss"); break; case PATTERN_6: sdf.applyPattern("yyyy-MM-dd HH:mm:ss:sss"); break; case PATTERN_7: sdf.applyPattern("y"); break; case PATTERN_8: sdf.applyPattern("M"); break; case PATTERN_9: sdf.applyPattern("w"); break; case PATTERN_10: sdf.applyPattern("W"); break; case PATTERN_11: sdf.applyPattern("D"); break; case PATTERN_12: sdf.applyPattern("d"); strDate = sdf.format(date); break; case PATTERN_13: sdf.applyPattern("F"); break; case PATTERN_14: sdf.applyPattern("E"); break; case PATTERN_15: sdf.applyPattern("H"); break; case PATTERN_16: sdf.applyPattern("k"); break; case PATTERN_17: sdf.applyPattern("K"); break; case PATTERN_18: sdf.applyPattern("h"); break; case PATTERN_19: sdf.applyPattern("m"); break; case PATTERN_20: sdf.applyPattern("s"); break; case PATTERN_21: sdf.applyPattern("S"); break; default: errMsg = resource.getString("format_not_exist"); log.info(errMsg); break; } strDate = sdf.format(date); sdf = null; } catch (Exception e) { strDate = null; errMsg = resource.getString("date_convert_string_error"); log.info(errMsg + "-->>" + e.getMessage()); } return strDate; } /** * * @param pattern: * 转换成当前日期的格式 * @return: 返回字符串当前日期格式 */ public static String getStringNowDate(int pattern) { return getStringDate(null, pattern); } /** * * @param date: * 格式化的日期, 如果日期为null, 则代表当前日期 * @param pattern: * 格式化日期的字符串模式, 例如:yyyy/MM/dd * @return 返回字符串日期的格式.如果发生异常或格式不存在返回null */ public static String getStringDate(Date date, String pattern){ String errMsg = ""; try { SimpleDateFormat sdf = new SimpleDateFormat(); sdf.applyPattern(pattern); if(date == null) date = new Date(); String strDate = sdf.format(date); sdf = null; return strDate; } catch (Exception e) { errMsg = resource.getString("date_convert_string_error"); log.info(errMsg + "-->>" +e.getMessage()); return null; } } /** * * @param pattern: * 格式化日期的字符串模式, 例如:yyyy/MM/dd * @return 返回字符串日期的格式.如果发生异常或格式不存在返回null */ public static String getStringNowDate(String pattern){ return getStringDate(null, pattern); } /** * * @param strDate: * 字符串日期 * @param pattern: * 转换的格式, 字符串日期要与转换的格式相匹配 * @return 返回把字符串日期转换成日期, 如果发生异常返回null */ public static Date getDate(String strDate, String pattern) throws ParseException { String errMsg = ""; try { SimpleDateFormat sdf = new SimpleDateFormat(); sdf.applyPattern(pattern); Date date = sdf.parse(strDate); sdf = null; return date; } catch (Exception e) { errMsg = resource.getString("string_convert_date_error"); log.info(errMsg + "-->>" + e.getMessage()); } return null; } /** * * @param date: * 字符串日期 * @param pattern: * 字符串格式,字符串格式与日期匹配 * @return 返回日期加一天后的日期 */ public static Date dateAddA(String strDate, String pattern) throws ParseException { Date date = getDate(strDate, pattern); if(date == null){ throw new ParseException("", 1); } return dateAddSub(date, '+'); } /** * * @param date: * 日期 * @return 返回日期加一天后的日期 * @throws Exception */ public static Date dateAddA(Date date) throws Exception { if(date == null){ throw new Exception(""); } return dateAddSub(date, '+'); } /** * * @param date: * 字符串日期 * @param pattern: * 字符串格式,字符串格式与日期匹配 * @return 返回日期减一天后的日期 */ public static Date dateSubA(String strDate, String pattern) throws ParseException { Date date = getDate(strDate, pattern); if(date == null){ throw new ParseException("", 1); } return dateAddSub(date, '-'); } /** * * @param date: * 日期 * @return 返回日期减一天后的日期 * @throws Exception */ public static Date dateSubA(Date date) throws Exception { if(date == null){ throw new Exception(""); } return dateAddSub(date, '-'); } private static Date dateAddSub(Date date, char ch){ Calendar calendar = Calendar.getInstance(); calendar.setTime(date); if(ch == '+'){ calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1); }else if(ch == '-'){ calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) - 1); } return calendar.getTime(); } public static void main(String[] args) throws Exception { System.out.println(getStringDate(dateAddA(new Date()), DateHelp.PATTERN_1)); } } 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-04-30
牛逼啊~~
|
|
返回顶楼 | |
发表时间:2009-04-30
让人看的很头疼。。这个排版。。建议。。把代码写在代码块上。。
|
|
返回顶楼 | |
发表时间:2009-04-30
最后修改:2009-04-30
/** 获取日期格式 yyyy/MM/dd */ public static final int PATTERN_1 = 1; /** 获取日期格式 yyyy/MM/dd HH:mm:ss */ public static final int PATTERN_2 = 2; /** 获取日期格式 yyyy/MM/dd HH:mm:ss:sss */ public static final int PATTERN_3 = 3; /** 获取日期格式 yyyy-MM-dd */ public static final int PATTERN_4 = 4; /** 获取日期格式 yyyy-MM-dd HH:mm:ss */ public static final int PATTERN_5 = 5; /** 获取日期格式 yyyy-MM-dd HH:mm:ss:sss */ public static final int PATTERN_6 = 6; /** 获取年 */ public static final int PATTERN_7 = 7; /** 获取年终的月份 */ public static final int PATTERN_8 = 8; /** 获取年终的周数 */ public static final int PATTERN_9 = 9; /** 获取月份中的周数 */ public static final int PATTERN_10 = 10; /** 获取年中的天数 */ public static final int PATTERN_11 = 11; /** 获取月份中的天数 */ public static final int PATTERN_12 = 12; /** 获取月份中的星期 */ public static final int PATTERN_13 = 13; /** 获取星期中的天数 */ public static final int PATTERN_14 = 14; /** 获取一天中的小时数(0-23) */ public static final int PATTERN_15 = 15; /** 获取一天中的小时数(1-24) */ public static final int PATTERN_16 = 16; /** 获取am/pm 中的小时数(0-11) */ public static final int PATTERN_17 = 17; /** 获取am/pm 中的小时数(1-11) */ public static final int PATTERN_18 = 18; /** 获取小时中的分钟数 */ public static final int PATTERN_19 = 19; /** 获取分钟中的秒数 */ public static final int PATTERN_20 = 20; /** 获取毫秒数 */ public static final int PATTERN_21 = 21; /** * * @param date: * 格式化的日期, 如果日期为null, 则代表当前日期 * @param pattern: * 格式化的日期模式 * @return: 返回字符串日期的格式.如果发生异常或格式不存在返回null */ public static String getStringDate(Date date, int pattern) { String strDate = null; SimpleDateFormat sdf = new SimpleDateFormat(); String errMsg = null; if (date == null) date = new Date(); try { switch (pattern) { case PATTERN_1: sdf.applyPattern("yyyy/MM/dd"); strDate = sdf.format(date); break; case PATTERN_2: sdf.applyPattern("yyyy/MM/dd HH:mm:ss"); strDate = sdf.format(date); break; case PATTERN_3: sdf.applyPattern("yyyy/MM/dd HH:mm:ss:sss"); strDate = sdf.format(date); break; case PATTERN_4: sdf.applyPattern("yyyy-MM-dd"); strDate = sdf.format(date); break; case PATTERN_5: sdf.applyPattern("yyyy-MM-dd HH:mm:ss"); strDate = sdf.format(date); break; case PATTERN_6: sdf.applyPattern("yyyy-MM-dd HH:mm:ss:sss"); strDate = sdf.format(date); break; case PATTERN_7: sdf.applyPattern("y"); strDate = sdf.format(date); break; case PATTERN_8: sdf.applyPattern("M"); strDate = sdf.format(date); break; case PATTERN_9: sdf.applyPattern("w"); strDate = sdf.format(date); break; case PATTERN_10: sdf.applyPattern("W"); strDate = sdf.format(date); break; case PATTERN_11: sdf.applyPattern("D"); strDate = sdf.format(date); break; case PATTERN_12: sdf.applyPattern("d"); strDate = sdf.format(date); break; case PATTERN_13: sdf.applyPattern("F"); strDate = sdf.format(date); break; case PATTERN_14: sdf.applyPattern("E"); strDate = sdf.format(date); break; case PATTERN_15: sdf.applyPattern("H"); strDate = sdf.format(date); break; case PATTERN_16: sdf.applyPattern("k"); strDate = sdf.format(date); break; case PATTERN_17: sdf.applyPattern("K"); strDate = sdf.format(date); break; case PATTERN_18: sdf.applyPattern("h"); strDate = sdf.format(date); break; case PATTERN_19: sdf.applyPattern("m"); strDate = sdf.format(date); break; case PATTERN_20: sdf.applyPattern("s"); strDate = sdf.format(date); break; case PATTERN_21: sdf.applyPattern("S"); strDate = sdf.format(date); break; default: errMsg = resource.getString("format_not_exist"); log.info(errMsg); break; } 这段代码是亮点啊~ |
|
返回顶楼 | |
发表时间:2009-04-30
代码过于冗余。
|
|
返回顶楼 | |