时间处理

 

首先写了一个公用的转换帮助类

package com.dzf.test;

import java.math.BigDecimal;
import java.sql.Date;
import java.text.DecimalFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;

public class ConvertHelper {
    
public static final String DecimalFormat = "###,###,###,##0.00";

    
public static final String DateFormat = "yyyy-MM-dd";

    
/**
     * 把字符串转换为整数。
     * 
     * 
@param str
     *            待转换的字符串
     * 
@return 整数
     * 
@throws Exception
     *             如果字符串格式不对
     
*/

    
public static int StringToInt(String str) {
        
if (str == null || str.equals("")) {
            
return 0;
        }
 else {
            
return Integer.parseInt(str);
        }

    }


    
/**
     * 把字符串转换为长整形。
     * 
     * 
@param str
     *            待转换的字符串
     * 
@return 整数
     * 
@throws Exception
     *             如果字符串格式不对
     
*/

    
public static long StringToLong(String str) {
        
if (str == null || str.equals(""))
            
return 0;
        
return StringToNumber(str).longValue();

    }


    
/**
     * 把字符串转换为DOUBLE。
     * 
     * 
@param str
     *            待转换的字符串
     * 
@return 整数
     * 
@throws Exception
     *             如果字符串格式不对
     
*/

    
public static double StringToDouble(String str) {
        
if (str == null || str.equals(""))
            
return 0;
        
return StringToNumber(str).doubleValue();

    }


    
/**
     * 把字符串转换为Decimal。
     * 
     * 
@param str
     *            待转换的字符串
     * 
@return 整数
     * 
@throws Exception
     *             如果字符串格式不对
     
*/

    
public static BigDecimal StringToDecimal(String str) {
        
return new BigDecimal(StringToNumber(str).doubleValue());

    }


    
/**
     * 把字符串转换为NUMBER。
     * 
     * 
@param str
     *            待转换的字符串
     * 
@return 整数
     * 
@throws Exception
     *             如果字符串格式不对
     
*/

    
public static Number StringToNumber(String str) {
        
if (str == null)
            
return null;
        
if (str.equals(""))
            str 
= "0";

        Number number;

        DecimalFormat df 
= new DecimalFormat(DecimalFormat);
        
try {
            number 
= df.parse(str);
            
return new BigDecimal(number.toString());
        }
 catch (ParseException e) {
            e.printStackTrace();
        }

        
return null;
    }


    
/**
     * 把BigDecimal类型转换为字符串
     * 
     * 
@param number
     * 
@return
     
*/

    
public static String DecimalToString(BigDecimal number) {
        
if (number == null{
            
return "0.00";
        }

        DecimalFormat df 
= new DecimalFormat(DecimalFormat);

        
return df.format(number);
    }


    
/**
     * 把Number类型转换为字符串
     * 
     * 
@param number
     * 
@return
     
*/

    
public static String DecimalToString(Number number) {
        
if (number == null{
            
return "0.00";
        }

        DecimalFormat df 
= new DecimalFormat(DecimalFormat);

        
return df.format(number);
    }


    
/**
     * 把double类型转换为字符串
     * 
     * 
@param number
     * 
@return
     
*/

    
public static String DecimalToString(double number) {
        DecimalFormat df 
= new DecimalFormat(DecimalFormat);
        
return df.format(number);
    }


    
/**
     * 把long类型转换为字符串
     * 
     * 
@param number
     * 
@return
     
*/

    
public static String DecimalToString(long number) {
        DecimalFormat df 
= new DecimalFormat(DecimalFormat);
        
return df.format(number);
    }


    
/**
     * 把java.util.Date类型转换为字符串
     * 
     * 
@param date
     * 
@return
     
*/

    
public static String DateToString(java.util.Date date) {
        
if (date == null)
            
return "";
        SimpleDateFormat sdf 
= new SimpleDateFormat(DateFormat);
        
return sdf.format(date);
    }


    
/**
     * 把字符串转换为Date类型
     * 
     * 
@param str
     *            时间类型如"2007-10-28"
     * 
@return
     * 
@throws Exception
     
*/

    
public static Date StringToDate(String str) {
        
if (str == null || str.equals(""))
            
return null;
        SimpleDateFormat sdf 
= new SimpleDateFormat(DateFormat);
        Date date;
        
try {
            date 
= new Date(sdf.parse(str).getTime());
            
return date;
        }
 catch (ParseException e) {
            e.printStackTrace();
        }

        
return null;
    }


    
/**
     * 把字符串转换为Date类型
     * 
     * 
@param str
     *            时间类型如"2007-10-28"
     * 
@param format
     *            时间格式如"yyyy-MM-dd"
     * 
@return
     * 
@throws Exception
     
*/

    
public static Date StringToDate(String str, String format) {
        
if (str == null || str.equals(""))
            
return null;
        SimpleDateFormat sdf 
= new SimpleDateFormat(format);
        Date date;
        
try {
            date 
= new Date(sdf.parse(str).getTime());
            
return date;
        }
 catch (ParseException e) {
            e.printStackTrace();
        }

        
return null;
    }


    
/**
     * 将OBJECT转换为STRING
     * 
     * 
@param obj
     * 
@return 如果OBJ为NULL, 则返回null
     
*/

    
public static String ObjToString(Object obj) {
        
return ObjToString(obj, null);
    }


    
/**
     * 将OBJECT转换为STRING
     * 
     * 
@param obj
     * 
@param retStr
     *            为空时的返回值
     * 
@return 如果OBJ为NULL, 则返回retStr
     
*/

    
public static String ObjToString(Object obj, String retStr) {
        
if (obj == null{
            
return retStr;
        }

        
return obj.toString();
    }


    
/**
     * 将传入的INT值,装换为固定字符补齐的字符串
     * 
     * 
@param value
     *            INT值
     * 
@param num
     *            长度
     * 
@param vchar
     *            字符
     * 
@return
     
*/

    
public static String IntToString(int value, int num, char vchar) {
        StringBuffer result 
= new StringBuffer();
        result.append(
new Integer(value).toString());
        
while (num > result.length()) {
            result.insert(
0, vchar);
        }

        
return result.toString();
    }


    
public static void main(String[] args) {
        
try {
            System.out.print(ConvertHelper.StringToNumber(
"1.0"));
        }
 catch (Exception e) {
            
// TODO Auto-generated catch block
            e.printStackTrace();
        }

    }

}

 

时间处理

 

package com.dzf.test;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.Iterator;
import java.util.List;

public class DateUtil {

    
/**
     * 判断输入年份是否当前年份
     * 
     * 
@param year
     *            输入年份
     * 
@return true - 是 false - 不是
     
*/

    
public static boolean isCurrentYear(String year) {
        Date date 
= new Date();
        SimpleDateFormat df 
= new SimpleDateFormat("yyyy");
        String strDate 
= df.format(date);
        
if (strDate.equals(year)) {
            
return true;
        }

        
return false;
    }


    
/**
     * 判断输入月份是否当前月份
     * 
     * 
@param year
     *            输入月份
     * 
@return true - 是 false - 不是
     
*/

    
public static boolean isCurrentMonth(String month) {
        Date date 
= new Date();
        SimpleDateFormat df 
= new SimpleDateFormat("MM");
        String strDate 
= df.format(date);

        
if (strDate.equals(month)) {
            
return true;
        }

        
return false;
    }


    
/**
     * 获取输入日期的月份
     * 
     * 
@param date
     * 
@return
     
*/

    
public static String getMonth(Date date) {
        SimpleDateFormat df 
= new SimpleDateFormat("MM");
        String strDate 
= df.format(date);
        
return strDate;
    }


    
/**
     * 获取输入日期的月份
     * 
     * 
@param strDate
     * 
@return
     * 
@throws Exception
     
*/

    
public static String getMonth(String startDate) throws Exception {
        Date date 
= ConvertHelper.StringToDate(startDate);
        
return getMonth(date);
    }


    
/**
     * 获取输入日期的年份
     * 
     * 
@param date
     * 
@return
     
*/

    
public static String getYear(Date date) {
        SimpleDateFormat df 
= new SimpleDateFormat("yyyy");
        String startDate 
= df.format(date);
        
return startDate;
    }


    
/**
     * 获取输入日期的年份
     * 
     * 
@param startDate
     * 
@return
     * 
@throws Exception
     
*/

    
public static String getYear(String startDate) throws Exception {
        Date date 
= ConvertHelper.StringToDate(startDate);
        
return getYear(date);
    }


    
/**
     * 根据输入的某天,返回该月第一天或者最后一天
     * 
     * 
@param startDate
     *            某天
     * 
@param flag
     *            0 - 第一天 1 - 最后一天
     * 
@return
     * 
@throws Exception
     
*/

    
public static String getFirstOrLastDay(Date date, int flag)
            
throws Exception {
        SimpleDateFormat df 
= new SimpleDateFormat("yyyy-MM");
        String startDate 
= df.format(date) + "-01";
        
// 取第一天
        if (flag == 0{
            
return startDate;
        }

        Date firstdate 
= ConvertHelper.StringToDate(startDate);
        
// 取最后一天
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(firstdate);
        calendar.add(Calendar.MONTH, 
1);
        calendar.add(Calendar.DAY_OF_YEAR, 
-1);
        df 
= new SimpleDateFormat("yyyy-MM-dd");
        
return df.format(calendar.getTime());
    }


    
/**
     * 根据输入的某天,返回该月的最后一天
     * 
     * 
@param startDate
     *            某天
     * 
@return
     * 
@throws Exception
     
*/

    
public static String getLastDay(Date date) throws Exception {
        
return getFirstOrLastDay(date, 1);
    }


    
/**
     * 根据输入的某天,返回该月第一天或者最后一天
     * 
     * 
@param startDate
     *            某天
     * 
@param flag
     *            0 - 第一天 1 - 最后一天
     * 
@return
     * 
@throws Exception
     
*/

    
public static String getFirstOrLastDay(String startDate, int flag)
            
throws Exception {
        Date date 
= ConvertHelper.StringToDate(startDate);
        
return getFirstOrLastDay(date, flag);
    }


    
/**
     * 根据输入的某天,返回该月最后一天
     * 
     * 
@param startDate
     *            某天
     * 
@return
     * 
@throws Exception
     
*/

    
public static String getLastDay(String startDate) throws Exception {
        Date date 
= ConvertHelper.StringToDate(startDate);
        
return getFirstOrLastDay(date, 1);
    }


    
/**
     * 根据输入的年、月,返回该月第一天或者最后一天
     * 
     * 
@param year
     *            年
     * 
@param month
     *            月
     * 
@param flag
     *            0 - 第一天 1 - 最后一天
     * 
@return
     * 
@throws Exception
     
*/

    
public static String getFirstOrLastDay(String year, String month, int flag)
            
throws Exception {
        String startDate 
= year + "-" + month + "-01";
        
return getFirstOrLastDay(startDate, flag);
    }


    
/**
     * 根据输入的年、月,返回该月最后一天
     * 
     * 
@param year
     *            年
     * 
@param month
     *            月
     * 
@return
     * 
@throws Exception
     
*/

    
public static String getLastDay(String year, String month) throws Exception {
        
// 取当月最后一天
        return getFirstOrLastDay(year, month, 1);
    }


    
/**
     * 根据本月日期,获取上月最后一天日期
     * 
     * 
@param date
     *            本月任意一天
     * 
@return 上月最后一天
     * 
@throws Exception
     
*/

    
public static String getSyLastDay(Date date) throws Exception {
        
// 取本月第一天
        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM");
        String startDate 
= df.format(date);
        startDate 
= startDate + "-01";
        Date firstDate 
= ConvertHelper.StringToDate(startDate);
        
// 取上月最后一天
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(firstDate);
        calendar.add(Calendar.DAY_OF_YEAR, 
-1);
        SimpleDateFormat dff 
= new SimpleDateFormat("yyyy-MM-dd");
        
return dff.format(calendar.getTime());
    }


    
/**
     * 根据本月日期,获取上月最后一天日期
     * 
     * 
@param startDate
     *            本月任意一天
     * 
@return 上月最后一天
     * 
@throws Exception
     
*/

    
public static String getSyLastDay(String startDate) throws Exception {
        
return getSyLastDay(ConvertHelper.StringToDate(startDate));
    }


    
/**
     * 获取传入日期相邻第N个月的第一天或者最后一天
     * 
     * 
@param date
     * 
@param nearby
     *            相邻月份 - 2 当前日期之后2个月 -2 - 当前日期之前2个月
     * 
@param flag
     *            0 - 第一天 1 - 最后一天
     * 
@return 相邻第N个月的第一天或者最后一天
     * 
@throws Exception
     
*/

    
public static String getNearbyMonthFirstOrLastDay(Date date, int nearby,
            
int flag) throws Exception {
        SimpleDateFormat df 
= new SimpleDateFormat("yyyy-MM");
        String startDate 
= df.format(date) + "-01";
        Date firstdate 
= ConvertHelper.StringToDate(startDate);
        Calendar calendar 
= Calendar.getInstance();
        calendar.setTime(firstdate);
        
// 取第一天
        if (flag == 0{
            calendar.add(Calendar.MONTH, nearby);
        }
 else // 取最后一天
            calendar.add(Calendar.MONTH, nearby + 1);
            calendar.add(Calendar.DAY_OF_YEAR, 
-1);
        }

        df 
= new SimpleDateFormat("yyyy-MM-dd");
        
return df.format(calendar.getTime());
    }


    
/**
     * 获取传入日期相邻第N个月的第一天或者最后一天
     * 
     * 
@param startDate
     * 
@param nearby
     *            相邻月份 - 2 当前日期之后2个月 -2 - 当前日期之前2个月
     * 
@param flag
     *            0 - 第一天 1 - 最后一天
     * 
@return 相邻第N个月的第一天或者最后一天
     * 
@throws Exception
     
*/

    
public static String getNearbyMonthFirstOrLastDay(String startDate,
            
int nearby, int flag) throws Exception {
        
return getNearbyMonthFirstOrLastDay(
                ConvertHelper.StringToDate(startDate), nearby, flag);
    }


    
/**
     * 获取传入日期相邻第N个天的日期
     * 
     * 
@param date
     * 
@param nearby
     *            相邻天数 2 当前日期之后2天 -2 - 当前日期之前2天
     * 
@return 相邻第N个天的日期
     
*/

    
public static String getNearbyDay(Date date, int nearby) {

        Calendar calendar 
= Calendar.getInstance();
        calendar.setTime(date);

        calendar.add(Calendar.DAY_OF_YEAR, nearby);

        SimpleDateFormat df 
= new SimpleDateFormat("yyyy-MM-dd");
        
return df.format(calendar.getTime());
    }


    
/**
     * 获取传入日期相邻第N个天的日期
     * 
     * 
@param startDate
     * 
@param nearby
     *            相邻天数 2 当前日期之后2天 -2 - 当前日期之前2天
     * 
@return 相邻第N个天的日期
     * 
@throws Exception
     
*/

    
public static String getNearbyDay(String startDate, int nearby)
            
throws Exception {
        
return getNearbyDay(ConvertHelper.StringToDate(startDate), nearby);
    }


    
/**
     * 获取某年某月的天数
     * 
     * 
@param year
     *            年份
     * 
@param month
     *            月份
     * 
@return days 本月份的天数
     
*/

    
/*
     * public static int getMonthDays(int year, int month) { Calendar c1 =
     * Calendar.getInstance(); c1.set(year, month - 1, 1); Calendar c2 =
     * Calendar.getInstance(); c2.set(year, month, 1); long c2s =
     * c2.getTimeInMillis(); long c1s = c1.getTimeInMillis(); long day = 1 * 24 *
     * 60 * 60 * 1000; int days = (int) ((c2s - c1s) / day); //
     * System.out.println(year + "年" + month + "月有" + days + "天"); return days; }
     
*/

    
public static int getMonthDays(int year, int month) {
        Calendar c 
= Calendar.getInstance();
        c.clear();
        c.add(Calendar.YEAR, year);
        c.add(Calendar.MONTH, month);
        
int days = c.getActualMaximum(Calendar.DAY_OF_MONTH);
        
// System.out.println(year + "年" + month + "月有" + days + "天");
        return days;
    }


    
/**
     * 获取两个时间段的天数
     * 
     * 
@param startDate
     *            开始时间
     * 
@param endDate
     *            结束时间
     * 
@return days 返回两个时间段的天数
     
*/

    
public static int getDaysBetween(String startDate, String endDate) {
        Calendar d1 
= Calendar.getInstance();
        Calendar d2 
= Calendar.getInstance();
        d1.clear();
        d2.clear();
        
try {
            d1.setTime(ConvertHelper.StringToDate(startDate));
            d2.setTime(ConvertHelper.StringToDate(startDate));
        }
 catch (Exception e) {
            e.printStackTrace();
        }

        
if (d1.after(d2)) {
            java.util.Calendar swap 
= d1;
            d1 
= d2;
            d2 
= swap;
        }

        
int days = d2.get(Calendar.DAY_OF_YEAR) - d1.get(Calendar.DAY_OF_YEAR);
        
int y2 = d2.get(Calendar.YEAR);
        
if (d1.get(Calendar.YEAR) != y2) {
            d1 
= (Calendar) d1.clone();
            
do {
                days 
+= d1.getActualMaximum(Calendar.DAY_OF_YEAR);// 得到当年的实际天数
                d1.add(Calendar.YEAR, 1);
            }
 while (d1.get(Calendar.YEAR) != y2);
        }

        
// System.out.println(startDate + "至" + endDate + "有" + days + "天");
        return days;
    }


    
/**
     * 获取增加月数后的月份
     * 
     * 
@param startDate
     *            开始时间
     * 
@param monthNum
     *            增加的月数
     * 
@return
     
*/

    
public static String getEndDate(String startDate, int monthNum) {
        String resultDate;
        resultDate 
= "";
        
try {
            Calendar calendar 
= Calendar.getInstance();
            calendar.setTime(ConvertHelper.StringToDate(startDate));
            
// calendar.add(Calendar.YEAR, monthNum);
            calendar.add(Calendar.MONTH, monthNum);
            calendar.add(Calendar.DATE, 
-1);
            Date date 
= calendar.getTime();
            resultDate 
= ConvertHelper.DateToString(date);
        }
 catch (Exception e) {
            e.printStackTrace();
        }

        
// System.out.print(startDate+"增加"+monthNum+"月后的日期为"+resultDate);
        return resultDate;
    }


    
/**
     * 获取某年第几个星期星期几的日期
     * 
     * 
@param year
     *            年份
     * 
@param weekOfYear
     *            第几个星期
     * 
@param DayOfWeek
     *            星期几
     * 
@return 日期
     
*/

    
public static String getDayOfWeek(String year, String weekOfYear,
            String DayOfWeek) 
{
        String date;
        date 
= "";
        Calendar cal 
= Calendar.getInstance();
        
try {
            cal.set(Calendar.YEAR, ConvertHelper.StringToInt(year));
            cal.set(Calendar.WEEK_OF_YEAR, ConvertHelper
                    .StringToInt(weekOfYear));
            cal.set(Calendar.DAY_OF_WEEK, ConvertHelper.StringToInt(DayOfWeek));
            date 
= ConvertHelper.DateToString(cal.getTime());
        }
 catch (Exception e) {
            e.printStackTrace();
        }

        
// System.out.print(year+"年的第"+weekOfYear+"个星期的日期为"+date);
        return date;
    }


    
/**
     * 获取日期为第几个星期
     * 
     * 
@param startDate
     * 
@return
     
*/

    
public static int getWeekOfYear(String startDate) {
        
int resultWeek = 0;
        
try {
            Calendar c 
= Calendar.getInstance();
            c.setTime(ConvertHelper.StringToDate(startDate));
            resultWeek 
= c.get(Calendar.WEEK_OF_YEAR);
            
// System.out.print(startDate+"为"+c.get(Calendar.YEAR)+"的第"+resultWeek+"个星期");
        }
 catch (Exception e) {
            e.printStackTrace();
        }

        
return resultWeek;
    }


    
/**
     * 获取某年某月所有星期的开始时间跟结束时间
     * 
@param year  
     * 
@param month
     * 
@return
     
*/

    
public static List<String> getAllWeekOfMonth(String year, String month) {
        
// SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
        List<String> timeList;
        
try {
            String last;
            last 
= DateUtil.getLastDay(year, month);
            timeList 
= new ArrayList<String>();
            
// 一个星期的毫秒数
            long time = 7 * 3600 * 24 * 1000;
            
// 一个月开始
            Date firstDay = ConvertHelper.StringToDate(year + "-" + month
                    
+ "-01");
            
// 月的最后一天
            Date lastDay = ConvertHelper.StringToDate(last);
            
// 最后一天的毫秒
            long endmonth = lastDay.getTime();
            Calendar calendar 
= Calendar.getInstance();
            
// 得到月开始的那天所在周的周一日期
            calendar.setTime(firstDay);
            calendar.set(Calendar.DAY_OF_WEEK, 
2);
            Date monday 
= calendar.getTime();
            String mon 
= ConvertHelper.DateToString(monday);
            
// 得到月开始的那天所在周的周日日期
            calendar.set(Calendar.DAY_OF_WEEK, 1);
            Date sunday 
= calendar.getTime();
            
// 由于系统要求一周是从周一开始周日结束 所以得到下周的周日
            calendar.setTimeInMillis(sunday.getTime() + time);
            sunday 
= calendar.getTime();
            String sun 
= ConvertHelper.DateToString(calendar.getTime());
            timeList.add(mon 
+ "," + sun);
            
// 循环得到本月的周
            for (int i = 0; i < 6; i++{
                calendar.setTimeInMillis(monday.getTime() 
+ time);
                monday 
= calendar.getTime();
                mon 
= ConvertHelper.DateToString(monday);
                calendar.setTimeInMillis(sunday.getTime() 
+ time);
                sunday 
= calendar.getTime();
                sun 
= ConvertHelper.DateToString(sunday);
                
if (monday.getTime() <= endmonth) {
                    timeList.add(mon 
+ "," + sun);
                }
 else {
                    
break;
                }

            }

            
return timeList;
        }
 catch (Exception e) {
            e.printStackTrace();
        }

        
return null;

    }


    
public static void main(String[] args) {
          List timeList 
= DateUtil.getAllWeekOfMonth("2008""04");
          
for (Iterator iter = timeList.iterator(); iter.hasNext();) { String
          element 
= (String) iter.next(); System.out.println(element); }

    }


}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值