`

J2EE工具类:DateUtil .java

阅读更多
package com.worthtech.app.util;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

public class DateUtil {

	/**
	 * 获得当前时间,格式yyyy-MM-dd hh:mm:ss
	 * @param format
	 * @return
	 */
	public static String getCurrentDate(){
		return getCurrentDate("yyyy-MM-dd hh:mm:ss");
	}
	/**
	 * 获得当前时间,格式自定义
	 * @param format
	 * @return
	 */
	public static String getCurrentDate(String format){
		Calendar day=Calendar.getInstance(); 
		day.add(Calendar.DATE,0); 
		SimpleDateFormat sdf=new SimpleDateFormat(format);//"yyyy-MM-dd"
		String date = sdf.format(day.getTime());
		return date;
	}
	/**
	 * 获得昨天时间,格式自定义
	 * @param format
	 * @return
	 */
	public static String getYesterdayDate(String format){
		Calendar day=Calendar.getInstance(); 
		day.add(Calendar.DATE,-1); 
		SimpleDateFormat sdf=new SimpleDateFormat(format);//"yyyy-MM-dd"
		String date = sdf.format(day.getTime());
		return date;
	}
	 /**  
      * @param date1 需要比较的时间 不能为空(null),需要正确的日期格式 ,如:2009-09-12 
      * @param date2 被比较的时间  为空(null)则为当前时间  
      * @param stype 返回值类型   0为多少天,1为多少个月,2为多少年  
      * @return  
      * 举例:
      * compareDate("2009-09-12", null, 0);//比较天
      * compareDate("2009-09-12", null, 1);//比较月
      * compareDate("2009-09-12", null, 2);//比较年
      */ 
     public static int compareDate(String startDay,String endDay,int stype){  
         int n = 0;  
         String[] u = {"天","月","年"};  
         String formatStyle = stype==1?"yyyy-MM":"yyyy-MM-dd";  
           
         endDay = endDay==null?getCurrentDate("yyyy-MM-dd"):endDay;  
           
         DateFormat df = new SimpleDateFormat(formatStyle);  
         Calendar c1 = Calendar.getInstance();  
         Calendar c2 = Calendar.getInstance();  
         try {  
             c1.setTime(df.parse(startDay));  
             c2.setTime(df.parse(endDay));
         } catch (Exception e3) {  
             System.out.println("wrong occured");  
         }  
         //List list = new ArrayList();  
         while (!c1.after(c2)) {                   // 循环对比,直到相等,n 就是所要的结果  
             //list.add(df.format(c1.getTime()));    // 这里可以把间隔的日期存到数组中 打印出来  
             n++;  
             if(stype==1){  
                 c1.add(Calendar.MONTH, 1);          // 比较月份,月份+1  
             }  
             else{  
                 c1.add(Calendar.DATE, 1);           // 比较天数,日期+1  
             }  
         }  
         n = n-1;  
         if(stype==2){  
             n = (int)n/365;  
         }     
//         System.out.println(startDay+" -- "+endDay+" 相差多少"+u[stype]+":"+n);        
         return n;  
     }
     /**
      * 判断时间是否符合时间格式
      */
	public static boolean isDate(String date, String dateFormat) {
		if (date != null) {
			java.text.SimpleDateFormat format = new java.text.SimpleDateFormat(dateFormat);
			format.setLenient(false);
			try {
				format.format(format.parse(date));
			} catch (ParseException e) {
				// TODO Auto-generated catch block
				return false;
			}
			return true;
		}
		return false;
	}
	 /**
	  * 实现给定某日期,判断是星期几
	  * date:必须yyyy-MM-dd格式
	  */
	 public static String getWeekday(String date){
		SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd");  
     SimpleDateFormat sdw = new SimpleDateFormat("E");  
     Date d = null;  
     try {  
         d = sd.parse(date);  
     } catch (ParseException e) {  
         e.printStackTrace();  
     }
     return sdw.format(d);
	 }
	 /**
	  * 用来全局控制 上一周,本周,下一周的周数变化
	  */
	private static int weeks = 0;
	/**
	 * 获得当前日期与本周一相差的天数
	 */
	 private static int getMondayPlus() {
	     Calendar cd = Calendar.getInstance();
	     // 获得今天是一周的第几天,星期日是第一天,星期二是第二天......
	     int dayOfWeek = cd.get(Calendar.DAY_OF_WEEK);
	     if (dayOfWeek == 1) {
	         return -6;
	     } else {
	         return 2 - dayOfWeek;
	     }
	 }
	 /**
	  * 获得本周星期一的日期
	  */
	 public static String getCurrentMonday(String format) {
	     weeks = 0;
	     int mondayPlus = getMondayPlus();
	     Calendar currentDate=Calendar.getInstance();
	     currentDate.add(Calendar.DATE, mondayPlus);
	     SimpleDateFormat sdf=new SimpleDateFormat(format);//"yyyy-MM-dd"
	     String date = sdf.format(currentDate.getTime());
	     return date;
	 }
	 /**
	  * 获得上周星期一的日期
	  */
	 public static String getPreviousMonday(String format) {
	     weeks--;
	     int mondayPlus = getMondayPlus();
	     Calendar currentDate=Calendar.getInstance();
	     currentDate.add(GregorianCalendar.DATE, mondayPlus + 7 * weeks);
	     SimpleDateFormat sdf=new SimpleDateFormat(format);//"yyyy-MM-dd"
	     String date = sdf.format(currentDate.getTime());
	     return date;
	 }
	 /**
	  * 获得下周星期一的日期
	  */
	 public static String getNextMonday(String format) {
	     weeks++;
	     int mondayPlus = getMondayPlus();
	//     GregorianCalendar currentDate = new GregorianCalendar();
	     Calendar currentDate=Calendar.getInstance();
	     currentDate.add(GregorianCalendar.DATE, mondayPlus + 7 * weeks);
	     SimpleDateFormat sdf=new SimpleDateFormat(format);//"yyyy-MM-dd"
	     String date = sdf.format(currentDate.getTime());
	     return date;
	 }
	 /**
	  * 获得相应周的周日的日期
	  * 此方法必须写在getCurrentMonday,getPreviousMonday或getNextMonday方法之后
	  */
	 public static String getSunday(String format) {
	     int mondayPlus = getMondayPlus();
	     Calendar currentDate=Calendar.getInstance();
	     currentDate.add(Calendar.DATE, mondayPlus + 7 * weeks + 6);
	     SimpleDateFormat sdf=new SimpleDateFormat(format);//"yyyy-MM-dd"
	     String date = sdf.format(currentDate.getTime());
	     return date;
	 }


/**
	  *method 将字符串类型的日期转换为一个timestamp(时间戳记java.sql.Timestamp)
	  *@param dateString 需要转换为timestamp的字符串
	  *@return dataTime timestamp
	  */
	public final static java.sql.Timestamp string2Time(String dateString) {
		DateFormat dateFormat;
		dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.ENGLISH);// 设定格式
		dateFormat.setLenient(false);
		java.util.Date date = null;
		try {
			date = dateFormat.parse(dateString);
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
//		java.sql.Timestamp dateTime = new java.sql.Timestamp(date.getTime());
		return new java.sql.Timestamp(date.getTime());// Timestamp类型,timeDate.getTime()返回一个long型
	}

	/**
	 *method 将字符串类型的日期转换为一个Date(java.sql.Date)
	 * 
	 * @param dateString
	 *            需要转换为Date的字符串
	 *@return dataTime Date
	 */
	public final static java.sql.Date string2Date(String dateString) {
		DateFormat dateFormat;
		dateFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);
		dateFormat.setLenient(false);
		java.util.Date date = null;
		try {
			date = dateFormat.parse(dateString);
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
//		java.sql.Date dateTime = new java.sql.Date(date.getTime());// sql类型
		return new java.sql.Date(date.getTime());
	}

//记录考勤, 记录迟到、早退时间
public static String getState() {   
        String state = "正常";   
        DateFormat df = new SimpleDateFormat("HH:mm:ss");   
        Date d = new Date();   
        try {   
            Date d1 = df.parse("08:00:00");   
            Date d2 = df.parse(df.format(d));   
            Date d3 = df.parse("18:00:00");   
  
            int t1 = (int) d1.getTime();   
            int t2 = (int) d2.getTime();   
            int t3 = (int) d3.getTime();   
            if (t2 < t1) {   
  
                long between = (t1 - t2) / 1000;// 除以1000是为了转换成秒   
                long hour1 = between % (24 * 3600) / 3600;   
                long minute1 = between % 3600 / 60;   
  
                state = "迟到 :" + hour1 + "时" + minute1 + "分";   
  
            } else if (t2 < t3) {   
                long between = (t3 - t2) / 1000;// 除以1000是为了转换成秒   
                long hour1 = between % (24 * 3600) / 3600;   
                long minute1 = between % 3600 / 60;   
                state = "早退 :" + hour1 + "时" + minute1 + "分";   
            }   
            return state;   
        } catch (Exception e) {   
            return state;   
        }   
  
    }   
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

        String s = getState();   
        System.out.println(s);
	}

}

分享到:
评论

相关推荐

    J2EE JAR包(J2EE1.3 J2EE1.4 J2EE5.0 )

    Java 企业版(Java 2 Platform, Enterprise Edition,简称 J2EE)是 Sun Microsystems 推出的用于构建分布式、多层企业级应用的框架。它为开发者提供了多种服务和组件模型,包括Java Servlets、JavaServer Pages ...

    j2ee.jar架包

    j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar架包j2ee.jar...

    j2ee 1.4所有jar包

    activation.jar javax.servlet.jar javax.servlet.jsp.jar jboss-j2ee.jar jboss-jaxrpc.jar jboss-jsr77.jar jboss-saaj.jar mail.jar namespace.jar xml-apis.jar

    21天学通J2EE和一些J2EE书及代码].java.-.Teach.Yourself.J2EE.in.21.Days.-.Sams.(eBook-pdf)

    《21天学通J2EE》一书旨在为读者提供一个系统且高效的学习路径,以掌握Java 2 Enterprise Edition(J2EE)的核心概念和技术。J2EE是Sun Microsystems在2000年推出的一套企业级Java平台标准,它提供了一组组件和服务...

    HTML笔记. J2EE笔记. Javascript笔记. JAVA笔记.oracle 笔记.Linux笔记.tomcat笔记.面试问题.数据结构.听韩顺平的笔记.正则表达式.

    HTML笔记. J2EE笔记. Javascript笔记. JAVA笔记.oracle 笔记.Linux笔记.tomcat笔记.面试问题.数据结构.听韩顺平的笔记.正则表达式.等,我是我在上大学时学习做的笔记,拿出来和大家共享。。

    Turbo ePrinting(J2EE版)开发指南.rar

    《Turbo ePrinting(J2EE版)开发指南》是一份专为Java企业级开发者准备的详细教程,旨在帮助他们理解和掌握如何在J2EE平台上开发和实现Turbo ePrinting系统。该指南涵盖了从基础概念到高级实践的全方位内容,旨在提升...

    J2EE考试题目及答案.pdf

    J2EE 是 Java 企业版平台的缩写,指的是 Java 语言中用于开发企业级应用程序的技术平台。J2EE 平台主要包括四层模型:客户端层、Web 层、业务逻辑层和企业信息系统层。 J2EE 平台的四层模型: * 客户端层:运行在...

    第一章 J2EE概述.ppt

    J2EE(Java Enterprise Edition),是Java EE编程技术课程的一部分,为企业级应用程序提供了一种标准化的开发框架。J2EE的出现是为了解决传统应用程序模型的种种缺陷,提供了一种可扩展、可维护、可伸缩的开发架构。...

    Java.J2EE.Job.Interview.Companion.2nd.Edition.Apr.2007

    《Java.J2EE.Job.Interview.Companion.2nd.Edition.Apr.2007》这本书是针对Java和J2EE开发者求职面试的一本指南,它提供了丰富的面试问题和解答,帮助求职者准备J2EE相关的职位面试。这本书的第二版在2007年4月发布...

    Java.J2EE.Job.Interview.Companion.2nd.Edition.Apr.2007.pdf

    ### Java/J2EE Job Interview Companion知识点总结 #### 一、书籍基本信息 - **书名**:《Java/J2EE Job Interview Companion》第二版 - **出版时间**:2007年4月 - **作者**:K. Arulkumaran 和 A. Sivayini - **...

    javax.management.j2ee:javax.management.j2ee api的存储库

    :warning: 该项目现在是EE4J计划的一部分。 该仓库已被归档,因为所有活动现在都在。 有关整体EE4J过渡状态,请参见。 javax.management.j2ee javax.management.j2ee api的存储库

    j2ee源码 Commonjava.java

    j2ee源码j2ee源码j2ee源码j2ee源码j2ee源码j2ee源码j2ee源Commonjava.javaCommonjava.javaCommonjava.javaCommonjava.javaCommonjava.java

    J2EE_architecture.rar_site:www.pudn.com_架构师

    J2EE提供JTA(Java Transaction API)来处理事务,JMS(Java Message Service)用于异步通信,JNDI(Java Naming and Directory Interface)提供命名和目录服务。 5. **中间件(Middleware)**:J2EE应用服务器(如...

    java-一个j2ee的开发案例程序.zip.zip

    你可以从中学习到如何将Java类、接口和框架整合起来实现一个完整的J2EE应用。 其次,"一个j2ee的开发案例程序.zip"是案例程序的源代码或二进制文件。这个压缩文件可能包含以下几个部分: 1. **源代码**:可能包括...

    J2EE系列讲座之Hibernate.lesson1.rar

    5. **实体类和映射文件**:讲解如何创建Java实体类,以及对应的.hbm.xml映射文件,理解属性与数据库字段的对应。 6. **CRUD操作**:展示如何使用Hibernate进行创建(Create)、读取(Read)、更新(Update)和删除...

    archive_一个j2ee的开发案例程序.zip.zip

    标题中的"archive_一个j2EE的开发案例程序.zip.zip"表明这是一个压缩文件,其中包含了一个J2EE(Java 2 Platform, Enterprise Edition)的开发案例。J2EE是Java平台的一个版本,专为构建企业级分布式应用系统设计。...

    Java开发语言的开发平台与J2EE编程技术问题研究.pdf

    J2EE(Java 2 Platform, Enterprise Edition)是基于Java语言的一种企业级应用开发平台,它侧重于企业级应用的开发。J2EE技术的出现,弥补了Java在企业级应用中的不足,其核心是Enterprise JavaBeans(EJB),提供了...

    j2ee.chm.zip_chm help id java_j2ee chm_j2ee help c++_j2ee.c_zip

    《J2EE技术详解——基于j2ee.chm.zip_chm help id java_j2ee chm_j2ee help c++_j2ee.c_zip的综合指南》 在信息技术领域,Java 2 Platform, Enterprise Edition(J2EE)是用于构建企业级应用的重要平台。它提供了...

    Java.J2EE.EJB-Enterprise.JavaBeans, 3rd Edition-Titan.Books

    《Java.J2EE.EJB-Enterprise.JavaBeans, 3rd Edition-Titan.Books》是一部针对企业级Java开发的重要参考资料,特别关注Java Enterprise Edition (J2EE) 中的Enterprise JavaBeans (EJB) 技术。这本书的第三版,由...

    Eclipse中通过Tomcat运行J2EE项目java.lang.OutOfMemoryError PermGen space的解决方案

    在 Eclipse 中通过 Tomcat 运行 J2EE 项目时,可能会出现 java.lang.OutOfMemoryError: PermGen space 异常,这是由于 JVM 默认分配的运行空间过小,导致 J2EE 项目加载的类过多,造成内存溢出。 PermGen space 是...

Global site tag (gtag.js) - Google Analytics