`
cocoIT
  • 浏览: 51063 次
  • 性别: Icon_minigender_1
  • 来自: 福建
文章分类
社区版块
存档分类
最新评论

时间处理工具类

 
阅读更多
import java.sql.Date;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;

/**
*
* 日期操作的工具类
*
* @author huwei(jshuwei.org.cn)
* @since 1.0
*
*/
public class DateUtil {

private static String defDtPtn = "yyyy-MM-dd HH:mm:ss";// 缺省日期格式

/**
* 计算给定时间至今的天数
*
* @since 1.1
* @param date
*给定的时间
* @return 给定时间至今的天数
*/
public static long date2day(String date) {
long day = 0;
DateFormat df = DateFormat.getDateInstance();
try {
long old = df.parse(date).getTime();
long now = new java.util.Date().getTime();
long secs = now - old;
day = secs / (1000 * 24 * 60 * 60);
} catch (ParseException e) {
e.printStackTrace();
}
return day;
}

/**
* 格式化给定时间后day天的时间
*
* @since 1.0
* @param date
*需要格式化的时间
* @param day
*增加的天数
* @return 给定时间的后day天的格式化字符串(如:2008-11-22)
*/
public static String formatDate(java.util.Date date, Integer day) {
String str = "";
str = new Date(date.getTime() day * 24 * 60 * 60).toString();
return str;
}

/**
* 格式化给定时间
*
* @param date
*需要格式化的时间
* @return 给定时间的格式化字符串(如:2008-11-22)
*/
public static String formatDate(java.util.Date date) {
return new Date(date.getTime()).toString();
}

/**
* 得到当前年
*
* @since 1.0
* @return 返回当前年(YYYY)
*/
public static int getYear() {
return Calendar.getInstance().get(Calendar.YEAR);
}

/**
* 得到当前月
*
* @since 1.0
* @return 返回当前月(1~12)
*/
public static int getMonth() {
return Calendar.getInstance().get(Calendar.MONTH) 1;
}

/**
* 得到当前日
*
* @since 1.0
* @return 返回当前日(1~31)
*/
public static int getDay() {
return Calendar.getInstance().get(Calendar.DAY_OF_MONTH);
}

/**
* 得到当前年
*
* @since 1.0
* @return 返回当前年(YY)
*/
public static String getYear2() {
int year = getYear();
return StringUtil.Integer2String(year, "1986").substring(2, 4);
}

/**
* 得到当前月
*
* @since 1.0
* @return 返回当前月(01~12)
*/
public static String getMonth2() {
int month = getMonth();
if (month < 10) {
return "0" StringUtil.Integer2String(month, "00");
}
return StringUtil.Integer2String(month, "00");
}

/**
* 得到当前日
*
* @since 1.0
* @return 返回当前日(01~31)
*/
public static String getDay2() {
int day = getDay();
if (day < 10) {
return "0" StringUtil.Integer2String(day, "00");
}
return StringUtil.Integer2String(day, "00");
}

/**
* 得到指定格式的当前时间
*
* @param format
*格式化形式(年用YY/YYYY表示;月用M/MM表示;日用D/DD表示,之间任意任序组合),<br />
*如"YYYY-MM-DD"返回形如:1986-12-17<br />
*如"YY-MM"返回形如:86-12<br />
*如"YY年MM月"返回形如:86年12月……
* @since 1.0
* @return 返回指定格式的当前时间
*
*/
public static String getDate(String format) {
format = format.replace("YYYY", getYear() "");
format = format.replace("YY", getYear2());
format = format.replace("MM", getMonth2());
format = format.replace("M", getMonth() "");
format = format.replace("DD", getDay2());
format = format.replace("D", getDay() "");
return format;
}

/**
* 将字符串按指定格式解析成日期对象
*
* @since 1.1
* @param dateStr
*需要进行转换的日期字符串
* @param pattern
*日期字符串的格式
* @return "yyyy-MM-dd HH:mm:ss"形式的日期对象
*/
public static java.util.Date parseDate(String dateStr, String pattern) {
SimpleDateFormat DATEFORMAT = new SimpleDateFormat(defDtPtn);
DATEFORMAT.applyPattern(pattern);
java.util.Date ret = null;
try {
ret = DATEFORMAT.parse(dateStr);
} catch (Exception e) {
e.printStackTrace();
}
DATEFORMAT.applyPattern(defDtPtn);
return ret;
}

/**
* 计算详细年龄
*
* @since 1.1
* @param birthdayStr
*出生日期 格式"YYYY-MM-DD"
* @return 指定日期至今天的年龄
*/
public static String countAge(String birthdayStr) {
String age = "";
if (birthdayStr != null && birthdayStr.length() == 8) {
java.util.Date birthday = parseDate(birthdayStr, "YYYY-MM-DD");

if (birthday != null) {
Calendar calendar = Calendar.getInstance();
int year1 = getYear();
int month1 = StringUtil.String2Integer(getMonth2(), 0);
int day1 = StringUtil.String2Integer(getDay2(), 00);

calendar.setTime(birthday);
int year2 = calendar.get(Calendar.YEAR);
int month2 = calendar.get(Calendar.MONTH) 1;
int day2 = calendar.get(Calendar.DATE);

int year = year1 - year2;
int month = month1 - month2;
int day = day1 - day2;

if (month < 0) {
year = year - 1;
month = 12 month1 - month2;
}

if (day < 0) {
month = month - 1;
if (month < 0) {
year = year - 1;
month = 11;
}
int lastMonthDay = 0;
if (month1 == 0) {
lastMonthDay = getDayOfMonth(12, year1 - 1);
} else {
lastMonthDay = getDayOfMonth(month1, year1);
}
day = lastMonthDay day1 - day2;
}

if (year > 5) {
age = year "岁";
} else if (year > 0) {
if (month == 0) {
age = year "岁";
} else {
age = year "岁" month "月";
}
} else {
if (month > 5) {
age = month "月";
} else if (month > 0) {
age = month "月" day "天";
} else {
age = day "天";
}
}
}
}

return age;
}

/**
* 得到指定年月的天数
*
* @since 1.1
* @param month
*指定月份
* @param year
*指定的年份
* @return 天数
*/
public static int getDayOfMonth(int month, int year) {
int ret = 0;
boolean flag = false;

if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
flag = true;
}

switch (month) {
case 1:
ret = 31;
break;
case 2:
if (flag) {
ret = 29;
} else {
ret = 28;
}
break;
case 3:
ret = 31;
break;
case 4:
ret = 30;
break;
case 5:
ret = 31;
break;
case 6:
ret = 30;
break;
case 7:
ret = 31;
break;
case 8:
ret = 31;
break;
case 9:
ret = 30;
break;
case 10:
ret = 31;
break;
case 11:
ret = 30;
break;
case 12:
ret = 31;
break;
default:
break;
}
return ret;
}

/**
* 计算某天是星期几
*
* @since 1.1
* @param p_date
*日期字符串
* @return 星期
*/
public static int whatDayIsSpecifyDate(String p_date) {
// 2002-2-22 is friday5
long differenceDays = 0L;
long m = 0L;
differenceDays = signDaysBetweenTowDate(p_date, "2002-2-22");

m = (differenceDays % 7);
m = m 5;
m = m > 7 ? m - 7 : m;
return Integer.parseInt(m "");
}

/**
* 计算两日期间相差天数.
*
* @since 1.1
* @param d1
*日期字符串
* @param d2
*日期字符串
* @return long 天数
*/
public static long signDaysBetweenTowDate(String d1, String d2) {
java.sql.Date dd1 = null;
java.sql.Date dd2 = null;
long result = -1l;
try {
dd1 = java.sql.Date.valueOf(d1);
dd2 = java.sql.Date.valueOf(d2);
result = signDaysBetweenTowDate(dd1, dd2);
} catch (Exception ex) {
result = -1;
}
return result;
}

/**
* 计算两日期间相差天数.
*
* @since 1.1
* @param d1
*开始日期 日期型
* @param d2
*结束日期 日期型
* @return long 天数
*/
public static long signDaysBetweenTowDate(java.sql.Date d1, java.sql.Date d2) {
return (d1.getTime() - d2.getTime()) / (3600 * 24 * 1000);
}
}

分享到:
评论

相关推荐

    flex 学习项目中总结的时间处理工具类DateUtils

    在这个名为"flex 学习项目中总结的时间处理工具类DateUtils"的项目中,我们可能找到了一个针对Flex开发环境优化的日期处理工具。Flex是一种基于Adobe ActionScript的开源框架,主要用于构建富互联网应用(RIA)。 `...

    非常强大的java时间处理工具类!.docx

    《非常强大的Java时间处理工具类——xk-time详解》 在Java编程中,时间处理是一项常见且重要的任务,尤其在处理日历事件、数据分析、定时任务等方面。然而,Java 8之前的日期API设计存在诸多不便,例如线程安全问题...

    日期时间处理工具类

    这是一个比较全面的处理日期时间的工具类,利用该工具类可以得到你想要的日期时间。里面代码简洁,方法已经封装好,只需要调用即可。自己可以将其打成jar包来用

    7 非常强大的java时间处理工具类!.docx

    XK-Time工具类库正是为了解决Java时间处理的不便而诞生的,它是一个基于Java 8 API的,线程安全且功能丰富的工具集合。这个库提供了一系列强大且易用的工具类,使得日期和时间的操作变得更加便捷。 首先,`...

    date时间处理工具类

    处理date添加或减少天数 处理date添加或减少月份 处理date添加或减少年份

    99 非常强大的java时间处理工具类!.docx

    总之,`xk-time`工具包通过其强大的功能和清晰的结构,为Java开发者提供了强大而方便的时间处理工具,无论是在简单的日期格式化还是复杂的日期计算场景,都能有效地提高开发效率并确保代码质量。通过深入理解和使用...

    工具类_时间处理

    "工具类_时间处理"这个主题主要聚焦于Java编程语言中的时间处理工具类,这些类可以帮助我们更加高效、准确地进行日期和时间的操作。以下是对这个主题的详细讲解: 1. **java.util.Date**: 这是Java早期用来表示日期...

    C# Util 实用工具类

    3. **Time**: 时间处理工具类帮助开发者进行日期和时间的格式化、比较、计算等操作。例如,可以提供方便的时间戳转换、日期格式化函数,以及检查时间间隔的辅助方法。 4. **Compress**: 压缩和解压缩是常见的数据...

    C# .Net 工具类大部分全部集成

    时间处理工具类则简化了日期和时间的操作,例如格式化日期字符串、计算时间差、处理时区转换等。在.NET中,DateTime结构提供了丰富的成员函数,而这些工具类可能会进一步抽象出常用功能,让开发者处理时间问题更加...

    C#200个基础工具类大全.rar

    2. **日期和时间**:日期时间处理工具类可能包括日期格式化、时间差计算、日期比较等功能,便于处理日期和时间相关的业务逻辑。 3. **数学计算**:工具类可能包含一些数学运算,如幂运算、取余数、最小最大值计算等...

    安卓开发框架工具类相关-常用android工具类收集.rar

    4. **日期时间处理工具类**:Java的日期时间API可能较为复杂,所以开发者常使用SimpleDateFormat、Calendar或者第三方库如ThreeTenABP、Java8的LocalDateTime等来处理日期和时间。 5. **权限管理工具类**:在...

    android开发工具类

    时间处理工具类,包括时间格式化、时间差计算、日期比较等。在处理时间相关的逻辑时,这类工具类能简化代码。 6. **HttpUtils.java**: HTTP请求工具类,封装了网络请求操作,比如GET、POST,支持异步或同步请求...

    日期处理工具类

    "日期处理工具类"通常是指一个自定义的类,它封装了一些常用的方法,例如日期格式化、字符串转换为日期以及对日期进行加减操作。这个类可能是开发者为了提高代码复用性和简化日期处理逻辑而创建的。 首先,让我们...

    java时间工具类,基本上全面的包括常用的关于时间的处理

    `java.time`包包含如`LocalDate`, `LocalTime`, `LocalDateTime`等类,提供了更强大且易用的时间处理功能。然而,由于许多老项目仍然使用`java.util.Date`,DateUtil可能仍然基于这个旧的API,或者它也可能已经进行...

    android开发常用工具类集锦

    1. **日期时间处理工具类**: 在Android开发中,我们常常需要格式化日期或时间,例如`DateTimeUtils`。这个工具类可能包含`formatDate`和`formatTime`方法,分别用于将日期和时间转换为用户友好的字符串。例如,...

    时间工具类

    java 时间处理工具类,包含时间截取、转换,固定格式时间转换

    java常用工具类打包下载

    J2EE常用工具类汇总 ...J2EE常用工具类—时间处理工具类 J2EE常用工具类—文件打包解包处理类 J2EE常用工具类——文件操作类 J2EE常用工具类——邮件处理类(javaMail发送邮件) J2EE常用工具类——字符串工具类

    Android快速开发不可或缺的11个工具类

    7. **DateUtils**: 日期时间处理工具类 DateUtils提供了一系列处理日期和时间的方法,如格式化、比较、计算间隔等,使得日期时间操作变得简单易用。 8. **ViewUtils**: 视图操作工具类 ViewUtils包含了一些对...

    时间格式化工具类

    "时间格式化工具类"通常是指自定义的类,用于封装Java标准库中的`java.time`或`java.text.SimpleDateFormat`等类的功能,以提供更方便、更灵活的时间处理方法。下面我们将深入探讨这个主题。 首先,`java.time`包是...

Global site tag (gtag.js) - Google Analytics