`
llflove1988
  • 浏览: 42997 次
  • 性别: Icon_minigender_2
  • 来自: 广州
社区版块
存档分类
最新评论

时间转换问题处理

SQL 
阅读更多
package com.cw.util;

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


/**
*
* <p>标题: dzgd</p>
* <p>描述: 关于日期和时间处理的辅助类</p>
* <p>版权: Copyright (c) 2003-2004</p>
* <p> </p>
* @作者
* @版本 1.0
*/
public class DateHelper
{
   //每月天数(非润年)
   static int daysInMonth[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
   // 闰年的特殊月份
   static final int MONTH_FEBRUARY = 2;

   public static final int PRECISE_YEAR   = 1;
   public static final int PRECISE_MONTH  = 2;
   public static final int PRECISE_DAY    = 3;
   public static final int PRECISE_HOUR   = 4;
   public static final int PRECISE_MINUTE = 5;
   public static final int PRECISE_SECOND = 6;
   public static final int PRECISE_MilliSECOND = 7;

   /**
    * 获得当天日期
    * @return yyyy-mm-dd
    */
   public static String getCurrentDateStr()
   {
      String curDateStr = "";

      Calendar cal = Calendar.getInstance();
      int year  = cal.get(Calendar.YEAR);
      int month = cal.get(Calendar.MONTH) + 1;
      int day   = cal.get(Calendar.DAY_OF_MONTH);

      curDateStr  = String.valueOf(year) + "-";
      curDateStr += ( (month < 10) ? "0" + String.valueOf(month) : String.valueOf(month)) + "-";
      curDateStr += ( (day < 10) ? "0" + String.valueOf(day) : String.valueOf(day));

      return curDateStr;
   }

   /**
    * 获得当前时间,精度到毫秒
    * @return hh:mm:ss.XXX
    */
   public static String getCurrentTimeStr()
   {
      String curTimeSr = "";

      Calendar cal = Calendar.getInstance();
      int hour   = cal.get(Calendar.HOUR_OF_DAY);
      int minute = cal.get(Calendar.MINUTE);
      int second = cal.get(Calendar.SECOND);
      int milliSecond = cal.get(Calendar.MILLISECOND);
      curTimeSr = ( (hour < 10) ? "0" + String.valueOf(hour) : String.valueOf(hour)) + ":";
      curTimeSr += ( (minute < 10) ? "0" + String.valueOf(minute) : String.valueOf(minute)) + ":";
      curTimeSr += ( (second < 10) ? "0" + String.valueOf(second) : String.valueOf(second));
      curTimeSr += "." + String.valueOf(milliSecond);

      return curTimeSr;
   }

   /**
    * 获得当天时间,精度到毫秒
    * @return yyyy-mm-dd hh-mm-ss.XXX
    */
   public static String getCurrentDateTimeStr()
   {
      String curDateTimeStr = "";
      curDateTimeStr = getCurrentDateStr() + " " + getCurrentTimeStr();
      return curDateTimeStr;
   }

   /**
    * 获得当前年份
    * @return yyyy
    */
   public static int getCurrentYear()
   {
      return Calendar.getInstance().get(Calendar.YEAR);
   }

   /**
    * 获取当前月份
    * @return
    */
   public static int getCurrentMonth()
   {
      return Calendar.getInstance().get(Calendar.MONTH) + 1;
   }

   /**
    * 获取当前日
    * @return
    */
   public static int getCurrentDay()
   {
      return Calendar.getInstance().get(Calendar.DAY_OF_MONTH) ;
   }


   /**
    * 判断是否闰月,用于计算当前时间加上分钟后的时间
    * @param year 年份
    * @return
    */
   public static boolean isLeapYear(int year)
   {
      // 能被100整除, 不能被400整除的年份, 不是闰年.
      // 能被100整除, 也能被400整除的年份, 是闰年.

      if ( (year % 100) == 0)
      {
         return ( (year % 400) == 0);
      }
      else // 不能被100整除, 能被4整除的年份是闰年.
      {
         return ( (year % 4) == 0);
      }
   }

   /**
    * 计算当前时间加上秒钟后的时间,建议方法名换为increaseCurDateTime
    * @param addedSecond 在当前时间上要加的秒数,注意输入的秒钟数不能大于一个月
    * @return yyyy-mm-dd hh-mm-ss.XXXX
    */
   public static String calDateTime(int addedSecond)
   {
      //若要限制输入的秒钟数不能大于一个月,则应在此加以判断

      Calendar cal = Calendar.getInstance();
      int year   = cal.get(Calendar.YEAR);
      int month  = cal.get(Calendar.MONTH) + 1;
      int day    = cal.get(Calendar.DAY_OF_MONTH);
      int hour   = cal.get(Calendar.HOUR_OF_DAY);
      int minute = cal.get(Calendar.MINUTE);
      int second = cal.get(Calendar.SECOND);
      int millisecond = cal.get(Calendar.MILLISECOND);

      // 获取当前月含有的天数, 如果是闰年的二月, 加一天.
      int daysInCurMonth = daysInMonth[month - 1];
      if (isLeapYear(year) && (month == MONTH_FEBRUARY))
      {
         daysInCurMonth += 1;
      }

      addedSecond += second;
      second = addedSecond % 60;

      //输入的分钟数不能大于一个月   ??? pay attention to here
      minute = minute + addedSecond / 60;
      //总的小时数
      hour = hour + minute / 60;
      //分钟数
      minute = minute % 60;
      //总的天数
      day = day + hour / 24;
      //小时数
      hour = hour % 24;

      if (day > daysInCurMonth)
      {
         //总的月份数,限制输入的秒钟数不能大于一个月的原因在此
         month = month + day / daysInCurMonth;
         //天数
         day = day % daysInCurMonth;
      }

      if (month > 12)
      {
         //总的年数
         year = year + month / 12;
         //月份数
         month = month % 12;
      }

      String dateTimeStr = "1900-01-01";
      dateTimeStr = String.valueOf(year) + "-";
      dateTimeStr += ( (month < 10) ? "0" + String.valueOf(month) : String.valueOf(month)) + "-";
      dateTimeStr += ( (day < 10) ? "0" + String.valueOf(day) : String.valueOf(day)) + " ";
      dateTimeStr += ( (hour < 10) ? "0" + String.valueOf(hour) : String.valueOf(hour)) + ":";
      dateTimeStr += ( (minute < 10) ? "0" + String.valueOf(minute) : String.valueOf(minute)) + ":";
      dateTimeStr += ( (second < 10) ? "0" + String.valueOf(second) : String.valueOf(second));
      dateTimeStr += "." + String.valueOf(millisecond);

      return dateTimeStr;
   }

   /**
    * 计算两个时间之间的时间差
    * @param strDateTime1 减数,格式为yyyy-mm-dd hh-mm-ss
    * @param strDateTime2 被减数,格式为yyyy-mm-dd hh-mm-ss
    * @return strDateTime1 - strDateTime2的时间差,单位为毫秒
    */
   public static long computeInterval(String strDateTime1, String strDateTime2)
   {
      long interval = 0;
      Timestamp date1 = convertStrToDate(strDateTime1);
      Timestamp date2 = convertStrToDate(strDateTime2);
      interval = date1.getTime() - date2.getTime();
      return interval;
   }

   /**
    * 得到指定精度的时间字符串
    * @param dateTimeString 原始时间字符串,格式为yyyy-mm-dd hh:mm:ss
    * @param precise 指定的精度
    * @return
    */
   public static String customDateTimeStr(String dateTimeString, int precise)
   {
      if(dateTimeString == null)
      {
         dateTimeString = "";
         return dateTimeString;
      }

      if(dateTimeString.trim().length() == 0)
      {
         return dateTimeString;
      }

      if (dateTimeString.startsWith("1900"))
      {
        dateTimeString = "";
        return dateTimeString;
      }

      if (precise == PRECISE_YEAR && dateTimeString.length() >= 4)
      {
        dateTimeString = dateTimeString.substring(0, 4);
      }
      if (precise == PRECISE_MONTH && dateTimeString.length() >= 7)
      {
        dateTimeString = dateTimeString.substring(0, 7);
      }
      if (precise == PRECISE_DAY && dateTimeString.length() >= 10)
      {
        dateTimeString = dateTimeString.substring(0, 10);
      }
      if (precise == PRECISE_HOUR && dateTimeString.length() >= 13)
      {
        dateTimeString = dateTimeString.substring(0, 13);
      }
      if (precise == PRECISE_MINUTE && dateTimeString.length() >= 16)
      {
        dateTimeString = dateTimeString.substring(0, 16);
      }
      if (precise == PRECISE_SECOND && dateTimeString.length() >= 19)
      {
        dateTimeString = dateTimeString.substring(0, 19);
      }

      return dateTimeString;
   }

   public static String convertDateToStr(Timestamp date)
   {
      String result = "1900-01-01 00:00:00.000";
      if(date != null)
      {
         result = date.toString();
      }
      return result;
   }

   public static Timestamp convertStrToDate(String strDate)
   {
      if(strDate==null)
      {
         strDate = "1900-01-01 00:00:00.000";
      }
      else
      {
         if(strDate.trim().length()==0)
         {
            strDate = "1900-01-01 00:00:00.000";
         }
         else if(strDate.trim().length()==10)   //传入的日期不包含时间
         {
            strDate += " 00:00:00.000";
         }
         else if(strDate.trim().length()==16)   //传入的日期包含时间到分钟位,如2000-01-01 10:10
         {
            strDate += ":00.000";
         }
      }
      return Timestamp.valueOf(strDate);
   }

   /**
    * add by hansomee
    * @param date
    * @return  a string with format YYYY-MM-DD from a Date object
    */
       public static String getDateStr(Date date)
       {
           String m,d;
           if(date == null) return "";
           int year = date.getYear() + 1900 ;
           int month = date.getMonth() + 1;
           if (month<10)
              m ="0"+ month;
           else
              m = ""+month;
           int day = date.getDate();
           if (day <10)
              d ="0"+day;
           else
              d=""+day;
           return year + "-" + m + "-" + d ;
       }


}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics