java处理日期相关的方法
2013-03-20 08:40
381 查看
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Vector;
/**
* @author Ring
* 日期工具类
* 1.将日期转成星期:DateToWeek(String date)
* 2.获取当前时间(格式:2013-01-16 09:47:30):getDateTime()
* 3.获取当前日期(格式:2013-01-16):getDate()
* 4.将时间转成数据库中的格式:dateTimeToDBDateTime(String str)
* 5.将日期转成数据库中的格式:dateToDBDateTime(String str)
* 6.判断当前日期是星期几:getDayForWeek(String pTime)
* 7. 判断当前星期中文名:getWeekName(int week)
* 8.把星期转成日期:weekToDate(String weekDay)
* 9.将星期转换成数字:weekToNumber(String str)
* 10. 获取+i天的日期:getNDayDate(int factor)
* 11.今天是星期几:getTodayWeek()
* 12.获取指定日期段的所有日期:getDateArrays(String start, String end)
* 13.指定一个日期,返回一个afterday之后的日期:getDateAfterintday
* 14. 计算两个日期之间的天数:getDaysBetweenDates(String start, String end)
* 15. 获取指定日期的前一天的日期:String getSpecifiedDayBefore(String specifiedDay)
*/
public class DateUtil {
/**
* 1.将日期转成星期
* 返回值格式如:星期一
* 参数的格式:2013-01-14 或2013-1-14
* 根据日期判断是星期几 参数的格式:2013-01-14 或2013-1-14
*
* @param date
* @return
*/
public static String DateToWeek(String date) {
try {
return getWeekName(getDayForWeek(date));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}
/**
* 2.获取当前时间
* 返回值的格式:2013-01-16 09:47:30
* @return
*/
public static String getDateTime() {
SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date dd = new Date();
return ft.format(dd);
}
/**
*获取当前时间:
* 时间格式:20130117185930
* @return
*/
public static String getDateTimeString() {
SimpleDateFormat ft = new SimpleDateFormat("yyyyMMddHHmmss");
Date dd = new Date();
return ft.format(dd);
}
/**
*3. 获取当前日期
* 返回值的格式:2013-01-16
* @return
*/
public static String getDate() {
SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd");
Date dd = new Date();
return ft.format(dd);
}
/**
* 4.将时间转成数据库中的格式
* 将格式为"2013-01-15 10:09"转成"2013-01-15 10:09:00.000"
* @param str
* @return
*/
public static String dateTimeToDBDateTime(String str) {
SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
try {
return ft.format(new SimpleDateFormat("yyyy-MM-dd HH:mm").parse(str));
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}
/**
* 5.将日期转成数据库中的格式
* 将格式为"2013-01-15"转成"2013-01-15 00:00:00.000"
* @param str
* @return
*/
public static String dateToDBDateTime(String str) {
SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
try {
return ft.format(new SimpleDateFormat("yyyy-MM-dd").parse(str));
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}
/**
* 6.判断当前日期是星期几
* @param pTime
* 修要判断的时间<br>
* @return dayForWeek 判断结果<br>
* @Exception 抛出异常<br>
*/
public static int getDayForWeek(String pTime) throws Exception {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Calendar c = Calendar.getInstance();
c.setTime(format.parse(pTime));
int dayForWeek = 0;
if (c.get(Calendar.DAY_OF_WEEK) == 1) {
dayForWeek = 7;
} else {
dayForWeek = c.get(Calendar.DAY_OF_WEEK) - 1;
}
return dayForWeek;
}
/**
* 7.判断当前星期中文名
* @param week
* @return
*/
public static String getWeekName(int week) {
String weekName = "星期日";
switch (week) {
case 1: {
weekName = "星期一";
break;
}
case 2: {
weekName = "星期二";
break;
}
case 3: {
weekName = "星期三";
break;
}
case 4: {
weekName = "星期四";
break;
}
case 5: {
weekName = "星期五";
break;
}
case 6: {
weekName = "星期六";
break;
}
default: {
break;
}
}
return weekName;
}
/**
* 8.把星期转成日期
* @param weekDay
* @return
*/
public static String weekToDate(String weekDay) {
//weekToDate(weekToNumber("星期四"))
int number=weekToNumber(weekDay);
int todayWeek=getTodayWeek();
if(number==(todayWeek%7))
return getNDayDate(0);
else if(number==(todayWeek+1)%7)
return getNDayDate(1);
else if(number==(todayWeek+2)%7)
return getNDayDate(2);
else if(number==(todayWeek+3)%7)
return getNDayDate(3);
else if(number==(todayWeek+4)%7)
return getNDayDate(4);
else if(number==(todayWeek+5)%7)
return getNDayDate(5);
else if(number==(todayWeek+6)%7)
return getNDayDate(6);
return null;
}
/**
* 9.将星期转换成数字
* @param str
* @return
*/
private static int weekToNumber(String str){
if(str.equalsIgnoreCase("星期一")||str.equalsIgnoreCase("星期1"))
return 1;
else if(str.equalsIgnoreCase("星期二")||str.equalsIgnoreCase("星期2"))
return 2;
else if(str.equalsIgnoreCase("星期三")||str.equalsIgnoreCase("星期3"))
return 3;
else if(str.equalsIgnoreCase("星期四")||str.equalsIgnoreCase("星期4"))
return 4;
else if(str.equalsIgnoreCase("星期五")||str.equalsIgnoreCase("星期5"))
return 5;
else if(str.equalsIgnoreCase("星期六")||str.equalsIgnoreCase("星期6"))
return 6;
else if(str.equalsIgnoreCase("星期日")||str.equalsIgnoreCase("星期7"))
return 0;
else
return 8;
}
/**
*10. 获取+i天的日期
* @param factor
* @return
*/
private static String getNDayDate(int factor) {
Date date=new Date();//取时间
//System.out.println("date"+date);
Calendar calendar = new GregorianCalendar();
calendar.setTime(date);
//calendar.add(calendar.DATE,1);//把日期往后增加一天.整数往后推,负数往前移动
calendar.add(calendar.DATE,factor);//把日期往后增加一天.整数往后推,负数往前移动
date=calendar.getTime(); //这个时间就是日期往后推一天的结果
//System.out.println("calendar.getTime()"+date);
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); //设置日期格式
String dateString = formatter.format(date);
//System.out.println("dateString"+dateString);
return dateString;
}
/**
*11:今天是星期几
*1:星期一,2:星期二,3:星期三,4:星期四,5:星期五,6:星期六,0:星期日
* @return
*/
public static int getTodayWeek() {
Calendar cal = Calendar.getInstance(); // 创建一个日历对象
System.out.println(cal.toString());
//System.out.println(cal.get(Calendar.DAY_OF_WEEK) - 1);
return (cal.get(Calendar.DAY_OF_WEEK) - 1);
}
/**
* 12.获取指定日期段的所有日期
* 参数格式:2013-01-13
* 输出日期格式:2013-01-13
* @param start
* @param end
* @return
*/
public static String[] getDateArrays(String start, String end) {
//start在前,end在后,如果end比start早则返回null
if(getDaysBetweenDates(start,end)>=0) {
Vector<String> v = new Vector<String>();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
GregorianCalendar gc1 = new GregorianCalendar();
GregorianCalendar gc2 = new GregorianCalendar();
try {
gc1.setTime(sdf.parse(start));
gc2.setTime(sdf.parse(end));
do {
GregorianCalendar gc3 = (GregorianCalendar) gc1.clone();
v.add(sdf.for
a5fd
mat(gc3.getTime()));
gc1.add(Calendar.DAY_OF_MONTH, 1);
} while (!gc1.after(gc2));
return v.toArray(new String[v.size()]);
} catch (ParseException e) {
e.printStackTrace();
System.out.println("日期格式不符合要求");
return null;
}
}else {
System.out.println("开始时间大于结束时间,请重新选择!");
return null;
}
}
/**
* 13.指定一个日期,返回一个afterday之后的日期
* @param start
* @param afterday
* @return
*/
public static Date getDateAfterintday(Date start, int afterday) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(start);
calendar.add(5, afterday);// 5表示操作日期
Date d = calendar.getTime();
return d;
}
/**
* 14. 计算两个日期之间的天数
* 返回值类型int
* 若想返回值为整数,小日期在前,大日期在后
* "2013-02-1" "2013-01-14"
* @param start
* @param end
* @return
*/
public static int getDaysBetweenDates(String start, String end) {
long quot = 0;
int interval=0;
SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd");
try {
Date date1 = ft.parse(end);
Date date2 = ft.parse(start);
quot = date1.getTime() - date2.getTime();
interval = (int)(quot / 1000 / 60 / 60 / 24);
} catch (ParseException e) {
e.printStackTrace();
}
System.out.println(interval);
return interval;
}
/**
* 15.获取指定日期的前一天的日期
* @param specifiedDay
* @return
*/
public static String getSpecifiedDayBefore(String specifiedDay){
//SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
Calendar c = Calendar.getInstance();
Date date=null;
try {
date = new SimpleDateFormat("yy-MM-dd").parse(specifiedDay);
} catch (ParseException e) {
e.printStackTrace();
}
c.setTime(date);
int day=c.get(Calendar.DATE);
c.set(Calendar.DATE,day-1);
String dayBefore=new SimpleDateFormat("yyyy-MM-dd").format(c.getTime());
return dayBefore;
}
public static void main(String[] args) {
System.out.println(getSpecifiedDayBefore("2013-03-01"));
}
/*//将星期转成日期
public String getWeekNameForDay(int days) {
SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date dt = new Date();
dt.setDate(dt.getDate() + days);
String date = sDateFormat.format(dt);
int onlineDay = 0;
try {
onlineDay = getDayForWeek(date);
date = getWeekName(onlineDay);
} catch (Exception e) {
*/
/**
*获取指定时间段的所有日期
*(张丹使用的方法)
*calendarType
* 1则代表的是对年份操作
* 2是对月份操作
* 3是对星期操作
* 5是对日期操作
* 11是对小时操作
* 12是对分钟操作
* 13是对秒操作
* 14是对毫秒操作。
* @param start
* @param end
* @param calendarType
* @return
*/
public static Date[] getDateArrays(Date start, Date end, int calendarType) {
ArrayList ret = new ArrayList();
Calendar calendar = Calendar.getInstance();
calendar.setTime(start);
Date tmpDate = calendar.getTime();
long endTime = end.getTime();
while (tmpDate.before(end) || tmpDate.getTime() == endTime) {
ret.add(calendar.getTime());
calendar.add(calendarType, 1);
tmpDate = calendar.getTime();
}
Date[] dates = new Date[ret.size()];
return (Date[]) ret.toArray(dates);
}
}
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Vector;
/**
* @author Ring
* 日期工具类
* 1.将日期转成星期:DateToWeek(String date)
* 2.获取当前时间(格式:2013-01-16 09:47:30):getDateTime()
* 3.获取当前日期(格式:2013-01-16):getDate()
* 4.将时间转成数据库中的格式:dateTimeToDBDateTime(String str)
* 5.将日期转成数据库中的格式:dateToDBDateTime(String str)
* 6.判断当前日期是星期几:getDayForWeek(String pTime)
* 7. 判断当前星期中文名:getWeekName(int week)
* 8.把星期转成日期:weekToDate(String weekDay)
* 9.将星期转换成数字:weekToNumber(String str)
* 10. 获取+i天的日期:getNDayDate(int factor)
* 11.今天是星期几:getTodayWeek()
* 12.获取指定日期段的所有日期:getDateArrays(String start, String end)
* 13.指定一个日期,返回一个afterday之后的日期:getDateAfterintday
* 14. 计算两个日期之间的天数:getDaysBetweenDates(String start, String end)
* 15. 获取指定日期的前一天的日期:String getSpecifiedDayBefore(String specifiedDay)
*/
public class DateUtil {
/**
* 1.将日期转成星期
* 返回值格式如:星期一
* 参数的格式:2013-01-14 或2013-1-14
* 根据日期判断是星期几 参数的格式:2013-01-14 或2013-1-14
*
* @param date
* @return
*/
public static String DateToWeek(String date) {
try {
return getWeekName(getDayForWeek(date));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}
/**
* 2.获取当前时间
* 返回值的格式:2013-01-16 09:47:30
* @return
*/
public static String getDateTime() {
SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date dd = new Date();
return ft.format(dd);
}
/**
*获取当前时间:
* 时间格式:20130117185930
* @return
*/
public static String getDateTimeString() {
SimpleDateFormat ft = new SimpleDateFormat("yyyyMMddHHmmss");
Date dd = new Date();
return ft.format(dd);
}
/**
*3. 获取当前日期
* 返回值的格式:2013-01-16
* @return
*/
public static String getDate() {
SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd");
Date dd = new Date();
return ft.format(dd);
}
/**
* 4.将时间转成数据库中的格式
* 将格式为"2013-01-15 10:09"转成"2013-01-15 10:09:00.000"
* @param str
* @return
*/
public static String dateTimeToDBDateTime(String str) {
SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
try {
return ft.format(new SimpleDateFormat("yyyy-MM-dd HH:mm").parse(str));
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}
/**
* 5.将日期转成数据库中的格式
* 将格式为"2013-01-15"转成"2013-01-15 00:00:00.000"
* @param str
* @return
*/
public static String dateToDBDateTime(String str) {
SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
try {
return ft.format(new SimpleDateFormat("yyyy-MM-dd").parse(str));
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return null;
}
}
/**
* 6.判断当前日期是星期几
* @param pTime
* 修要判断的时间<br>
* @return dayForWeek 判断结果<br>
* @Exception 抛出异常<br>
*/
public static int getDayForWeek(String pTime) throws Exception {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Calendar c = Calendar.getInstance();
c.setTime(format.parse(pTime));
int dayForWeek = 0;
if (c.get(Calendar.DAY_OF_WEEK) == 1) {
dayForWeek = 7;
} else {
dayForWeek = c.get(Calendar.DAY_OF_WEEK) - 1;
}
return dayForWeek;
}
/**
* 7.判断当前星期中文名
* @param week
* @return
*/
public static String getWeekName(int week) {
String weekName = "星期日";
switch (week) {
case 1: {
weekName = "星期一";
break;
}
case 2: {
weekName = "星期二";
break;
}
case 3: {
weekName = "星期三";
break;
}
case 4: {
weekName = "星期四";
break;
}
case 5: {
weekName = "星期五";
break;
}
case 6: {
weekName = "星期六";
break;
}
default: {
break;
}
}
return weekName;
}
/**
* 8.把星期转成日期
* @param weekDay
* @return
*/
public static String weekToDate(String weekDay) {
//weekToDate(weekToNumber("星期四"))
int number=weekToNumber(weekDay);
int todayWeek=getTodayWeek();
if(number==(todayWeek%7))
return getNDayDate(0);
else if(number==(todayWeek+1)%7)
return getNDayDate(1);
else if(number==(todayWeek+2)%7)
return getNDayDate(2);
else if(number==(todayWeek+3)%7)
return getNDayDate(3);
else if(number==(todayWeek+4)%7)
return getNDayDate(4);
else if(number==(todayWeek+5)%7)
return getNDayDate(5);
else if(number==(todayWeek+6)%7)
return getNDayDate(6);
return null;
}
/**
* 9.将星期转换成数字
* @param str
* @return
*/
private static int weekToNumber(String str){
if(str.equalsIgnoreCase("星期一")||str.equalsIgnoreCase("星期1"))
return 1;
else if(str.equalsIgnoreCase("星期二")||str.equalsIgnoreCase("星期2"))
return 2;
else if(str.equalsIgnoreCase("星期三")||str.equalsIgnoreCase("星期3"))
return 3;
else if(str.equalsIgnoreCase("星期四")||str.equalsIgnoreCase("星期4"))
return 4;
else if(str.equalsIgnoreCase("星期五")||str.equalsIgnoreCase("星期5"))
return 5;
else if(str.equalsIgnoreCase("星期六")||str.equalsIgnoreCase("星期6"))
return 6;
else if(str.equalsIgnoreCase("星期日")||str.equalsIgnoreCase("星期7"))
return 0;
else
return 8;
}
/**
*10. 获取+i天的日期
* @param factor
* @return
*/
private static String getNDayDate(int factor) {
Date date=new Date();//取时间
//System.out.println("date"+date);
Calendar calendar = new GregorianCalendar();
calendar.setTime(date);
//calendar.add(calendar.DATE,1);//把日期往后增加一天.整数往后推,负数往前移动
calendar.add(calendar.DATE,factor);//把日期往后增加一天.整数往后推,负数往前移动
date=calendar.getTime(); //这个时间就是日期往后推一天的结果
//System.out.println("calendar.getTime()"+date);
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); //设置日期格式
String dateString = formatter.format(date);
//System.out.println("dateString"+dateString);
return dateString;
}
/**
*11:今天是星期几
*1:星期一,2:星期二,3:星期三,4:星期四,5:星期五,6:星期六,0:星期日
* @return
*/
public static int getTodayWeek() {
Calendar cal = Calendar.getInstance(); // 创建一个日历对象
System.out.println(cal.toString());
//System.out.println(cal.get(Calendar.DAY_OF_WEEK) - 1);
return (cal.get(Calendar.DAY_OF_WEEK) - 1);
}
/**
* 12.获取指定日期段的所有日期
* 参数格式:2013-01-13
* 输出日期格式:2013-01-13
* @param start
* @param end
* @return
*/
public static String[] getDateArrays(String start, String end) {
//start在前,end在后,如果end比start早则返回null
if(getDaysBetweenDates(start,end)>=0) {
Vector<String> v = new Vector<String>();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
GregorianCalendar gc1 = new GregorianCalendar();
GregorianCalendar gc2 = new GregorianCalendar();
try {
gc1.setTime(sdf.parse(start));
gc2.setTime(sdf.parse(end));
do {
GregorianCalendar gc3 = (GregorianCalendar) gc1.clone();
v.add(sdf.for
a5fd
mat(gc3.getTime()));
gc1.add(Calendar.DAY_OF_MONTH, 1);
} while (!gc1.after(gc2));
return v.toArray(new String[v.size()]);
} catch (ParseException e) {
e.printStackTrace();
System.out.println("日期格式不符合要求");
return null;
}
}else {
System.out.println("开始时间大于结束时间,请重新选择!");
return null;
}
}
/**
* 13.指定一个日期,返回一个afterday之后的日期
* @param start
* @param afterday
* @return
*/
public static Date getDateAfterintday(Date start, int afterday) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(start);
calendar.add(5, afterday);// 5表示操作日期
Date d = calendar.getTime();
return d;
}
/**
* 14. 计算两个日期之间的天数
* 返回值类型int
* 若想返回值为整数,小日期在前,大日期在后
* "2013-02-1" "2013-01-14"
* @param start
* @param end
* @return
*/
public static int getDaysBetweenDates(String start, String end) {
long quot = 0;
int interval=0;
SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd");
try {
Date date1 = ft.parse(end);
Date date2 = ft.parse(start);
quot = date1.getTime() - date2.getTime();
interval = (int)(quot / 1000 / 60 / 60 / 24);
} catch (ParseException e) {
e.printStackTrace();
}
System.out.println(interval);
return interval;
}
/**
* 15.获取指定日期的前一天的日期
* @param specifiedDay
* @return
*/
public static String getSpecifiedDayBefore(String specifiedDay){
//SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
Calendar c = Calendar.getInstance();
Date date=null;
try {
date = new SimpleDateFormat("yy-MM-dd").parse(specifiedDay);
} catch (ParseException e) {
e.printStackTrace();
}
c.setTime(date);
int day=c.get(Calendar.DATE);
c.set(Calendar.DATE,day-1);
String dayBefore=new SimpleDateFormat("yyyy-MM-dd").format(c.getTime());
return dayBefore;
}
public static void main(String[] args) {
System.out.println(getSpecifiedDayBefore("2013-03-01"));
}
/*//将星期转成日期
public String getWeekNameForDay(int days) {
SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date dt = new Date();
dt.setDate(dt.getDate() + days);
String date = sDateFormat.format(dt);
int onlineDay = 0;
try {
onlineDay = getDayForWeek(date);
date = getWeekName(onlineDay);
} catch (Exception e) {
*/
/**
*获取指定时间段的所有日期
*(张丹使用的方法)
*calendarType
* 1则代表的是对年份操作
* 2是对月份操作
* 3是对星期操作
* 5是对日期操作
* 11是对小时操作
* 12是对分钟操作
* 13是对秒操作
* 14是对毫秒操作。
* @param start
* @param end
* @param calendarType
* @return
*/
public static Date[] getDateArrays(Date start, Date end, int calendarType) {
ArrayList ret = new ArrayList();
Calendar calendar = Calendar.getInstance();
calendar.setTime(start);
Date tmpDate = calendar.getTime();
long endTime = end.getTime();
while (tmpDate.before(end) || tmpDate.getTime() == endTime) {
ret.add(calendar.getTime());
calendar.add(calendarType, 1);
tmpDate = calendar.getTime();
}
Date[] dates = new Date[ret.size()];
return (Date[]) ret.toArray(dates);
}
}
相关文章推荐
- Java日期时间处理的简要使用方法
- java动态代理类,测试,实现AOP,在执行target回调方法前后插入相关代码处理
- JAVA处理日期时间常用方法【转载】
- JAVA处理日期(Date)时间(Time)以及相关类的介绍
- java获取日期相关小方法
- java中日期的处理方法!
- JAVA处理日期时间常用方法
- Java处理日期常用方法
- Java API的Date, Calendar日期处理相关类分析
- JAVA处理日期时间常用方法
- Java日期时间处理常用方法
- JAVA处理日期时间常用方法
- 关于日期,java处理日期间隔的方法(简单实用)
- JAVA日期相关的方法总结
- JAVA处理日期时间常用方法:
- Java 的 PermGen 概念的认识,以及相关问题的处理方法
- JAVA处理日期时间常用方法
- JAVA处理日期(Date)时间(Time)以及相关类的介绍
- JAVA处理日期时间的方法介绍
- jAVA处理日期(Date)时间(Time)以及相关类的介绍