public static int lastDayOfMonth(int year, int month)
  {
    if (month == 2)
    {
      if (isLeapYear(year)) {
        return 29;
      }
      return 28;
    }
    if ((month == 1) || (month == 3) || (month == 5) || (month == 7) || (month == 8) || (month == 10) ||
      (month == 12)) {
      return 31;
    }
    return 30;
  }
 
  public static boolean isLeapYear(int year)
  {
    if ((year % 400 == 0) || ((year % 4 == 0) && (year % 100 != 0))) {
      return true;
    }
    return false;
  }
 
  public static Date dateInstance(int year, int month, int day)
  {
    Calendar c = Calendar.getInstance();
    c.set(year, month - 1, day, 0, 0, 0);
    return c.getTime();
  }
 
  public static Date dateInstance(int year, int month, int day, int hour, int min, int sec)
  {
    Calendar c = Calendar.getInstance();
    c.set(year, month - 1, day, hour, min, sec);
    return c.getTime();
  }
 
  public static Calendar calendarInstance(Date d)
  {
    Calendar c = Calendar.getInstance();
    c.setTime(d);
    return c;
  }
 
  public static int weekDay(Date d)
  {
    Calendar c = Calendar.getInstance();
    c.setTime(d);
    return c.get(7);
  }
 
  public static int weekCountOfMonth(int year, int month)
  {
    int lastDay = lastDayOfMonth(year, month);
    Calendar c = Calendar.getInstance();
    c.set(year, month - 1, lastDay);
    return c.get(4);
  }
 
  public static int firstDayOfWeekDay(int year, int month, int argWeekDay)
  {
    Date d = dateInstance(year, month, 1);
    int weekday = weekDay(d);
    if (weekday == argWeekDay) {
      return 1;
    }
    if (weekday > argWeekDay) {
      return 1 + (7 - (weekday - argWeekDay));
    }
    return 1 + (argWeekDay - weekday);
  }
 
  public static int lastDayOfWeekDay(int year, int month, int argWeekDay)
  {
    int lastDay = lastDayOfMonth(year, month);
    int weekday = weekDay(dateInstance(year, month, lastDay));
    if (weekday == argWeekDay) {
      return lastDay;
    }
    if (weekday < argWeekDay) {
      return lastDay - (7 - (argWeekDay - weekday));
    }
    return lastDay - (weekday - argWeekDay);
  }
 
  public static int[] lastMonth(Date d)
  {
    Calendar c = Calendar.getInstance();
    c.setTime(d);
    int year = c.get(1);
    int month = c.get(2) + 1;
    if (month == 1) {
      return new int[] { year - 1, 12 };
    }
    return new int[] { year, month - 1 };
  }
 
  public static int[] lastMonth(int year, int month)
  {
    return lastMonth(dateInstance(year, month, 1));
  }
 
  public static int[] nextMonth(Date d)
  {
    Calendar c = Calendar.getInstance();
    c.setTime(d);
    int year = c.get(1);
    int month = c.get(2) + 1;
    if (month == 12) {
      return new int[] { year + 1, 1 };
    }
    return new int[] { year, month + 1 };
  }
 
  public static int[] nextMonth(int year, int month)
  {
    return nextMonth(dateInstance(year, month, 1));
  }
 
  public static long daysBetween(Date startDate, Date endDate)
  {
    return (endDate.getTime() - startDate.getTime()) / ONE_DAY_MILLIS;
  }
 
  public static Date addDays(Date d, int days)
  {
    if (d == null) {
      return null;
    }
    return new Date(d.getTime() + days * ONE_DAY_MILLIS);
  }
 
  public static Date addMonths(Date d, int months)
  {
    if (months == 0) {
      return d;
    }
    Calendar c = calendarInstance(d);
    int day = c.get(5);
    int hour = c.get(11);
    int min = c.get(12);
    int sec = c.get(13);
   
    Date mydate = d;
    if (months > 0) {
      for (int kk = 0; kk < months; kk++)
      {
        int[] tmp = nextMonth(mydate);
        mydate = dateInstance(tmp[0], tmp[1], 1);
      }
    } else {
      for (int kk = 0; kk > months; kk--)
      {
        int[] tmp = lastMonth(mydate);
        mydate = dateInstance(tmp[0], tmp[1], 1);
      }
    }
    c = calendarInstance(mydate);
    int year = c.get(1);
    int month = c.get(2) + 1;
    int lastDay = lastDayOfMonth(year, month);
    if (day > lastDay) {
      day = lastDay;
    }
    return dateInstance(year, month, day, hour, min, sec);
  }
 
  public static String toString(Date d, String format)
  {
    return new SimpleDateFormat(format).format(d);
  }
 
  public static Date toDate(String dateString, String format)
  {
    try
    {
      return new SimpleDateFormat(format).parse(dateString);
    }
    catch (ParseException e)
    {
      throw new RuntimeException(e);
    }
  }
 
  public static String getStrYear()
  {
    return new SimpleDateFormat("yyyy").format(new Date());
  }
 
  public static String getStrMonth()
  {
    return new SimpleDateFormat("MM").format(new Date());
  }
 
  public static String getStrDay()
  {
    return new SimpleDateFormat("dd").format(new Date());
  }
 
  public static String getStrYearMonthDay()
  {
    return new SimpleDateFormat("yyyyMMdd").format(new Date());
  }
 
  public static Date getCurDate()
  {
    return new Date();
  }
 
  public static BigDecimal calDays(Date beginDate, Date endDate)
  {
    if ((beginDate != null) && (endDate != null))
    {
      BigDecimal days = new BigDecimal(daysBetween(beginDate, endDate));
      return days.setScale(6, 4);
    }
    return null;
  }
 
  public static Date truncDate(Date d, String format)
  {
    Calendar c = calendarInstance(d);
    int year = c.get(1);
    int mon = c.get(2) + 1;
    int day = c.get(5);
    int hour = c.get(11);
    int min = c.get(12);
    int sec = c.get(13);
    if (format.equals("yyyy")) {
      return dateInstance(year, 1, 1);
    }
    if (format.equals("MM")) {
      return dateInstance(year, mon, 1);
    }
    if (format.equals("dd")) {
      return dateInstance(year, mon, day);
    }
    if (format.equals("HH")) {
      return dateInstance(year, mon, day, hour, 0, 0);
    }
    if (format.equals("mm")) {
      return dateInstance(year, mon, day, hour, min, 0);
    }
    if (format.equals("ss")) {
      return dateInstance(year, mon, day, hour, min, sec);
    }
    return d;
  }
 
  public static Date padToMax(Date d, String format)
  {
    Calendar c = calendarInstance(d);
    int year = c.get(1);
    int mon = c.get(2) + 1;
    int day = c.get(5);
    int hour = c.get(11);
    int min = c.get(12);
    int sec = c.get(13);
    if (format.equals("yyyy")) {
      return dateInstance(year, 12, 31, 23, 59, 59);
    }
    if (format.equals("MM")) {
      return dateInstance(year, mon, lastDayOfMonth(year, mon), 23, 59, 59);
    }
    if (format.equals("dd")) {
      return dateInstance(year, mon, day, 23, 59, 59);
    }
    if (format.equals("HH")) {
      return dateInstance(year, mon, day, hour, 59, 59);
    }
    if (format.equals("mm")) {
      return dateInstance(year, mon, day, hour, min, 59);
    }
    if (format.equals("ss")) {
      return dateInstance(year, mon, day, hour, min, sec);
    }
    return d;
  }
 
  public static Timestamp date2Timestamp(Date d)
  {
    Calendar sysCal = Calendar.getInstance();
    sysCal.setTime(d);
    return new Timestamp(sysCal.getTimeInMillis());
  }
 
  public static String timestamp2String(Timestamp t)
  {
    String n = t.toString();
    int vv = n.indexOf(".");
    String bb = n.substring(0, vv);
    return bb;
  }
 
  public static Date strToDate(String str, String dateformat)
    throws ParseException
  {
    DateFormat format = new SimpleDateFormat(dateformat);
    Date date = format.parse(str);
    return date;
  }
 
  public static String getCurrentSysTimeNow()
  {
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    Date date = new Date();
    return sdf.format(date);
  }
 
  public static String getCurrentSysTimeNow(String s)
  {
    Date date = new Date();
    s = s.length() < 4 ? "yyyy-MM-dd HH:mm:ss" : s;
    SimpleDateFormat sdf = new SimpleDateFormat(s);
    return sdf.format(date);
  }
 
  /**
  * 得到当前月份
  * @return
  */
 public static String getCurrentMonthInfo(){
  java.util.Calendar calendar = java.util.Calendar.getInstance();
  int monthI = calendar.get(Calendar.MONTH) + 1;
  return monthI + "";
 }
 /**
  * 得到当前年份
  * @return
  */
 public static String getCurrentYearInfo(){
  java.util.Calendar calendar = java.util.Calendar.getInstance();
  int year = calendar.get(Calendar.YEAR) ;
  return year + "";
 }

关于时间的util类,以后方便查阅的更多相关文章

  1. 常用类一一时间处理相关类一一java.util.Tomezone(java.util.Calendar , java.util.Date , java.text.DateFormat)

    时间处理相关类 时间是一个一维的东东.所以,我们需要一把刻度尺来区表达和度量时间.在计算机世界,我们把1970 年 1 月 1 日 00:00:00定为基准时间,每个度量单位是毫秒(1秒的千分之一). ...

  2. [java工具类01]__构建格式化输出日期和时间的工具类

    在之前的学习中,我写过一篇关于字符串格式化的,就主要设计到了时间以及日期的各种格式化显示的设置,其主要时通过String类的fomat()方法实现的. 我们可以通过使用不同的转换符来实现格式化显示不同 ...

  3. Java中Date类型如何向前向后滚动时间,( 附工具类)

    Java中的Date类型向前向后滚动时间(附工具类) 废话不多说,先看工具类: import java.text.SimpleDateFormat; import java.util.Calendar ...

  4. Java日期时间实用工具类

    Java日期时间实用工具类 1.Date (java.util.Date)    Date();        以当前时间构造一个Date对象    Date(long);        构造函数   ...

  5. jdk8 时间日期工具类(转)

    package com.changfu.common.util; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import jav ...

  6. property_自己编写一个读取Property文件的Util类

    读取property文件的Util类: 所需jar包: 编写PropertiesUtil类: package com.west.util.property; import java.io.InputS ...

  7. mysql取出现在的时间戳和时间时间戳转成人类看得懂的时间

    mysql取出现在的时间戳和时间时间戳转成人类看得懂的时间,我们在mysql里面他封装了一个内置的时间戳转化的函数,比如我们现在的时间戳是:1458536709 ,"%Y-%m-%d&quo ...

  8. Problem B: 时间和日期类(III)

    Problem B: 时间和日期类(III) Time Limit: 4 Sec  Memory Limit: 128 MBSubmit: 2889  Solved: 1732[Submit][Sta ...

  9. asp.net(C#)实现功能强大的时间日期处理类完整实例

    作者:smartsmile2012 字体:[增加 减小] 类型:转载 时间:2016-06-30我要评论 这篇文章主要介绍了asp.net(C#)实现功能强大的时间日期处理类,封装了针对日期与时间的各 ...

随机推荐

  1. SQL SERVER 创建作业

    ),,                ,            ,     , ,      ),SERVERPROPERTY(N,                ,            ,     ...

  2. 使用rosed编辑ROS文件

    1.1使用rosed. rosed是rosbash套件的一部分.它可以使你通过package的名字直接编辑一个package中的文件而不用输入package的整个路径. 用法: $ rosed [pa ...

  3. libpng交叉编译安装

    tar xzf libpng-1.5.22.tar.gz cd libpng-1.5.22 mkdir tmp 打开Makefile文件并修改CC=arm-linux-gcc ./configure ...

  4. 从QQ网站中提取的纯JS省市区三级联动

    在 http://ip.qq.com/ 的网站中有QQ自己的JS省市区三级联动 QQ是使用引用外部JS来实现三级联动的.JS如下:http://ip.qq.com/js/geo.js <!DOC ...

  5. Redhat6.x下如何制作虚拟机快照和镜像封装

    一.虚拟机快照 1.确认你的物理机上的vg还有足够的剩余空间 [root@hacker ~]# vgs  VG        #PV #LV #SN Attr   VSize  VFree   vg_ ...

  6. SharePoint重置密码功能Demo

    博客地址 http://blog.csdn.net/foxdave 本文将说明一个简单的重置SharePoint用户密码(NTLM Windows认证)的功能如何实现 重置密码功能,实际上就是重置域用 ...

  7. (转)ASP.NET(C#) 读取EXCEL ——另加解决日期问题

    使用OLEDB可以对excel文件进行读取,我们只要把该excel文件作为数据源即可. 一 在D盘创建excel文件test.xls: 二 将工作表Sheet1的内容读取到DataSet string ...

  8. Android之View.onMeasure方法

    View在屏幕上显示出来要先经过measure(计算)和layout(布局). 1.什么时候调用onMeasure方法? 当控件的父元素正要放置该控件时调用.父元素会问子控件一个问题,“你想要用多大地 ...

  9. Java(JVM运行时)各种内存区域详解及扩展

    本文整理于  Java内存与垃圾回收调优 Java 堆内存 从几个sample来学习Java堆,方法区,Java栈和本地方法栈 首先来一张图让我们理清楚java运行时状态: 诚然,如上图所示:java ...

  10. 2013 imac 安装 win7

    昨天晚上安装imac win7系统,其实步骤是很简单的,首先需要一个用boot camp助手做好的win7安装U盘或者有个外接光驱加一张win7光盘,然后用boot camp助理划分一个分区给win7 ...