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之路:12.9.4 Struts的基本流程
在飞实习学J2EE之路:12.9.23 Hibernate的基本流程(登录)
在飞实习学J2EE之路:12.9.5 Struts用DBCP连接池(登陆,注册)
21天学通J2EE和一些J2EE书及代码].java.-.Teach.Yourself.J2EE.in.21.Days.-.Sams.(eBook-pdf)
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实验二:学习使用Session和Cookie
J2EE中软件基础结构的瓶颈,对性能感兴趣的朋友可以参考一下
java帮助文档\J2EE 1.4 docs.java帮助文档\J2EE 1.4 docs.java帮助文档\J2EE 1.4 docs.java帮助文档\J2EE 1.4 docs.java帮助文档\J2EE 1.4 docs.java帮助文档\J2EE 1.4 docs.
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
HTML笔记. J2EE笔记. Javascript笔记. JAVA笔记.oracle 笔记.Linux笔记.tomcat笔记.面试问题.数据结构.听韩顺平的笔记.正则表达式.等,我是我在上大学时学习做的笔记,拿出来和大家共享。。
Java开发语言的开发平台与J2EE编程技术问题研究.pdf
开发者突击:Java Web主流框架整合开发:J2EE+Struts+Hibernate+Spring 部分例子源代码 及数据库
Java.J2EE.Job.Interview.Companion.2nd.Edition.Apr.2007
j2ee源码j2ee源码j2ee源码j2ee源码j2ee源码j2ee源码j2ee源Commonjava.javaCommonjava.javaCommonjava.javaCommonjava.javaCommonjava.java
Java.J2EE.Job.Interview.Companion.2nd.Edition
Java.J2EE.Job.Interview.Companion.2nd.Edition.Apr.2007.pdf
六、用deploytool工具部署CMP实现的实体Bean 七、CMP的主键 第7章 一个消息驱动Bean的例子 一.例子应用程序介绍 二.J2EE应用程序客户端 三.消息驱动Bean类 四.运行本例子 五.用deploytool部署消息驱动Bean 六....
:warning: 该项目现在是EE4J计划的一部分。 该仓库已被归档,因为所有活动现在都在。 有关整体EE4J过渡状态,请参见。 javax.management.j2ee javax.management.j2ee api的存储库
网上有人总结的java必看15大名书,细数才13本,呵呵,下载了一下,发上来...第五本 Expert.One.on.One.J2EE.Design.and.Development 这本书是Rod Johnson的成名著作,非常经典,从这本书中的代码诞生了springframework
美河制作.中文版EXPERT.ONE.ON.ONE.J2EE.DEVELOPMENT.WITHOUT.EJB.part06.rar