Java日期处理

http://blog.csdn.net/lovesomnus/article/details/23277557


日期和时间模式

[java]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1.        // 格式:年-月-日 小时:分钟:秒  
  2. public static final String FORMAT_ONE = "yyyy-MM-dd HH:mm:ss";  
  3.   
  4. // 格式:年-月-日 小时:分钟  
  5. public static final String FORMAT_TWO = "yyyy-MM-dd HH:mm";  
  6.   
  7. // 格式:年月日 小时分钟秒  
  8. public static final String FORMAT_THREE = "yyyyMMdd-HHmmss";  
  9.   
  10. // 格式:年-月-日  
  11. public static final String FORMAT_FOUR = "yyyy-MM-dd";  
  12.   
  13. // 格式:年月日  
  14. public static final String FORMAT_FOUR_NO = "yyyyMMdd";  
  15.   
  16. // 格式:年-月  
  17. public static final String FORMAT_FIVE = "yyyy-MM";  
  18.   
  19. // 格式:年月  
  20. public static final String FORMAT_SIX = "yyyyMM";  
  21.   
  22. static final String dayNames[] = { "星期日""星期一""星期二""星期三""星期四","星期五""星期六" };  
  23.   
  24. private static final SimpleDateFormat timeFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  

yyyyMMdd 转换为 yyyy-MM-dd

[java]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. public static String stringTostring(String str){  
  2.     SimpleDateFormat sf1 = new SimpleDateFormat(FORMAT_FOUR_NO);  
  3.     SimpleDateFormat sf2 =new SimpleDateFormat(FORMAT_FOUR);  
  4.     String sfstr = "";  
  5.     try   
  6.     {  
  7.         sfstr = sf2.format(sf1.parse(str));  
  8.     }   
  9.     catch (Exception e) {  
  10.         e.printStackTrace();  
  11.     }  
  12.     return sfstr;  
  13. }  

把符合日期格式的字符串转换为日期类型

[java]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. public static java.util.Date stringtoDate(String dateStr, String format)  
  2. {  
  3.     Date d = null;  
  4.     SimpleDateFormat formater = new SimpleDateFormat(format);  
  5.     try  
  6.     {  
  7.         formater.setLenient(false);//指定日期\时间解析是否不严格  
  8.         d = formater.parse(dateStr);  
  9.     }  
  10.     catch (Exception e)  
  11.     {  
  12.         e.printStackTrace();  
  13.     }  
  14.     return d;  
  15. }  

把日期类型转换为字符串

[java]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. public static String dateToString(java.util.Date date, String format)  
  2. {  
  3.     String result = "";  
  4.     SimpleDateFormat formater = new SimpleDateFormat(format);  
  5.     try  
  6.     {  
  7.         result = formater.format(date);  
  8.     }  
  9.     catch (Exception e)  
  10.     {  
  11.         e.printStackTrace();  
  12.     }  
  13.     return result;  
  14. }  

对某个日期进行处理相加减

[java]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. /** 
  2.  * @param dateKind 指定处理年、月、日 
  3.  * @param dateStr 指定日期 
  4.  * @param amount 指定长度 
  5.  * @return 
  6.  */  
  7. public static String dateSub(int dateKind, String dateStr, int amount)  
  8. {  
  9.     Date date = stringtoDate(dateStr, FORMAT_ONE);  
  10.     Calendar calendar = Calendar.getInstance();  
  11.     calendar.setTime(date);  
  12.     calendar.add(dateKind, amount);  
  13.     return dateToString(calendar.getTime(), FORMAT_ONE);  
  14. }  

返回一个相加减后的日期 yyyy-MM-dd

[java]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. public static String dateSub(int days)  
  2. {  
  3.     Calendar calendar = Calendar.getInstance();  
  4.     calendar.add(Calendar.DAY_OF_YEAR, days);  
  5.     return dateToString(calendar.getTime(), FORMAT_FOUR);  
  6. }  

两个日期相减得到的秒数

[java]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. public static long timeSub(String firstTime, String secTime)  
  2. {  
  3.     long first = stringtoDate(firstTime, FORMAT_ONE).getTime();  
  4.     long second = stringtoDate(secTime, FORMAT_ONE).getTime();  
  5.     return (second - first) / 1000;  
  6. }  

获取某年某月的天数 Method1

[java]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. public static int getDaysOfMonth(String year, String month)  
  2. {  
  3.     Date date = stringtoDate(year+"-"+month, FORMAT_FIVE);  
  4.     Calendar calendar = Calendar.getInstance();  
  5.     calendar.setTime(date);  
  6.     return calendar.getActualMaximum(Calendar.DAY_OF_MONTH);  
  7. }  

获取某年某月的天数 Method2

[java]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. public static int getDaysOfMonth(int year, int month)  
  2. {  
  3.     Calendar calendar = Calendar.getInstance();  
  4.     calendar.set(year, month - 11);  
  5.     return calendar.getActualMaximum(Calendar.DAY_OF_MONTH);  
  6. }  

返回日期的年

[java]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. public static int getYear(Date date)  
  2. {  
  3.     Calendar calendar = Calendar.getInstance();  
  4.     calendar.setTime(date);  
  5.     return calendar.get(Calendar.YEAR);  
  6. }  

返回当前年份

[java]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. public static int getTodayYear()  
  2. {  
  3.     return getYear(new Date());  
  4. }  

返回日期的月份,1-12

[java]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. public static int getMonth(Date date)  
  2. {  
  3.     Calendar calendar = Calendar.getInstance();  
  4.     calendar.setTime(date);  
  5.     return calendar.get(Calendar.MONTH) + 1;  
  6. }  

返回当前月份

[java]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. public static int getTodayMonth()  
  2. {  
  3.     return getMonth(new Date());  
  4. }  

计算两个日期相差的天数,如果date2 > date1 返回正数,否则返回负数

[java]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. public static long dayDiff(Date date1, Date date2)  
  2. {  
  3.     return (date2.getTime() - date1.getTime()) / 86400000;  
  4. }  

获取当前日期字符串,格式"yyyy-MM-dd HH:mm:ss"

[java]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. public static String getNow()  
  2. {  
  3.     Calendar today = Calendar.getInstance();  
  4.     return dateToString(today.getTime(), FORMAT_ONE);  
  5. }  

获取当前时间的指定格式

[java]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. public static String getCurrDate(String format)  
  2. {  
  3.     return dateToString(new Date(), format);  
  4. }  

判断日期是否有效,包括闰年的情况

[java]  view plain copy print ? 在CODE上查看代码片 派生到我的代码片
  1. public static boolean isDate(String date)  
  2. {  
  3.     StringBuffer reg = new StringBuffer(  
  4.             "^((\\d{2}(([02468][048])|([13579][26]))-?((((0?");  
  5.     reg.append("[13578])|(1[02]))-?((0?[1-9])|([1-2][0-9])|(3[01])))");  
  6.     reg.append("|(((0?[469])|(11))-?((0?[1-9])|([1-2][0-9])|(30)))|");  
  7.     reg.append("(0?2-?((0?[1-9])|([1-2][0-9])))))|(\\d{2}(([02468][12");  
  8.     reg.append("35679])|([13579][01345789]))-?((((0?[13578])|(1[02]))");  
  9.     reg.append("-?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))");  
  10.     reg.append("-?((0?[1-9])|([1-2][0-9])|(30)))|(0?2-?((0?[");  
  11.     reg.append("1-9])|(1[0-9])|(2[0-8]))))))");  
  12.     Pattern p = Pattern.compile(reg.toString());  
  13.     return p.matcher(date).matches();  
  14. }  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值