此文转载自:leonelwong的博客,个人觉得很好,就收藏了。这里谢谢leonelwong
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import java.util.Locale;
/**
* @author Leonel Wong
* @version 1.0.0
* @create 2008-07-24 10:10
* @see 处理时间(包括时间格式的类)
*/
public class DateUtils {
/**
* 取时间年的格式代码
*/
public static String YEAR = "yyyy";
/**
* 取时间月的格式代码
*/
public static String MONTH = "MM";
/**
* 取时间日的格式代码
*/
public static String DAY = "dd";
/**
* 取时间时的格式代码
*/
public static String HOUR = "hh";
/**
* 取时间24小时制的格式代码
*/
public static String HOUR_24 = "HH";
/**
* 取时间分的格式代码
*/
public static String MIMUTE = "mm";
/**
* 取时间秒的格式代码
*/
public static String SECOND = "ss";
/**
* 取时间毫秒的格式代码
*/
public static String MILLISECOND = "SS";
/**
* 格式为yyyy-MM-dd的时间
*/
public static String YMD_FORMAT = YEAR + "-" + MONTH + "-" + DAY;
/**
* 格式为yyyy-MM-dd HH:mm:ss的时间
*/
public static String YMDHMS_FORMAT = YEAR + "-" + MONTH + "-" + DAY + " "
+ HOUR_24 + ":" + MIMUTE + ":" + SECOND;
/**
* 格式为yyyy-MM-dd HH:mm:ss:SS的时间
*/
public static String UTILTIME_FORMAT = YEAR + "-" + MONTH + "-" + DAY + " "
+ HOUR_24 + ":" + MIMUTE + ":" + SECOND + ":" + MILLISECOND;
/**
* 格式为yyyyMMddHHmmssSS的时间
*/
public static String CRITERIONTIME_FORMAT = YEAR + MONTH + DAY + HOUR_24
+ MIMUTE + SECOND + MILLISECOND;
/**
* @author 王磊
* @see 2008-03-08 获得yy-mm-dd格式的时间
* @return String date
*/
public static String getYearMonthDay() {
return getDateByFormat(YEAR + "-" + MONTH + "-" + DAY);
}
/**
* @see 返回格式为yyyy-MM-dd HH:mm:ss:SS的时间字符串
* @return String date
*/
public static String getNOWTime_0() {
return getDateByFormat(UTILTIME_FORMAT);
}
/**
* @see 返回格式为yyyyMMddHHmmssSS的时间字符串
* @return String date
*/
public static String getNOWTime_1() {
return getDateByFormat(CRITERIONTIME_FORMAT);
}
/**
* @see 获得指定时间格式
* @param String
* format 时间格式
* @return String dateStr 返回获得相应格式时间的字符串
*/
public static String getDateByFormat(String format) {
String dateStr = "";
try {
if (format != null) {
Date date = new Date(System.currentTimeMillis());
SimpleDateFormat simFormat = new SimpleDateFormat(format,
Locale.CHINA);
dateStr = simFormat.format(date);
}
} catch (Exception e) {
e.printStackTrace();
}
return dateStr;
}
/**
* @see 获得指定时间格式
* @param Date
* date 时间
* @param String
* format 时间格式
* @return String dateStr 返回获得相应格式时间的字符串
*/
public static String getDateByFormatYMD(Date date) {
String dateStr = "";
try {
SimpleDateFormat simFormat = new SimpleDateFormat(YMD_FORMAT,
Locale.CHINA);
dateStr = simFormat.format(date);
} catch (Exception e) {
e.printStackTrace();
}
return dateStr;
}
/**
* @see 获得指定时间格式
* @param Date
* date 时间
* @param String
* format 时间格式
* @return String dateStr 返回获得相应格式时间的字符串
*/
public static String getDateByFormat(Date date, String format) {
String dateStr = "";
try {
if (format != null) {
SimpleDateFormat simFormat = new SimpleDateFormat(format,
Locale.CHINA);
dateStr = simFormat.format(date);
}
} catch (Exception e) {
e.printStackTrace();
}
return dateStr;
}
/**
* @see 获得当前时间
* @return Date date
*/
public static Date getNOWTime() {
return new Date(System.currentTimeMillis());
}
/**
* @see 把字符串类型的时间转换为yyyy-MM-dd的时间格式
*/
public static Date getDateByStrToYMD(String str) {
Date date = null;
if (str != null && str.trim().length() > 0) {
DateFormat dFormat = new SimpleDateFormat(YMD_FORMAT);
try {
date = dFormat.parse(str);
} catch (ParseException e) {
e.printStackTrace();
}
}
return date;
}
/**
* @see 把字符串类型的时间转换为自定义格式的时间
*/
public static Date getDateByStrToFormat(String format, String str) {
DateFormat dFormat = new SimpleDateFormat(format);
Date date = null;
try {
if (str != null) {
date = dFormat.parse(str);
}
} catch (ParseException e) {
e.printStackTrace();
}
return date;
}
/**
* 功能:判断输入年份是否为闰年<br>
*
* @param year
* @return 是:true 否:false
* @author pure
*/
public static boolean leapYear(int year) {
boolean leap;
if (year % 4 == 0) {
if (year % 100 == 0) {
if (year % 400 == 0) {
leap = true;
} else {
leap = false;
}
} else {
leap = true;
}
} else
leap = false;
return leap;
}
/**
* 功能:得到指定月份的月底 格式为:xxxx-yy-zz (eg: 2007-12-31)<br>
*
* @param String
* @return String
*/
public static String getEndOfMonth(String str) {
int tyear = Integer.parseInt(getDateByFormat(getDateByStrToYMD(str),
YEAR));
int tmonth = Integer.parseInt(getDateByFormat(getDateByStrToYMD(str),
MONTH));
String strtmonth = null;
String strZ = null;
if (tmonth == 1 || tmonth == 3 || tmonth == 5 || tmonth == 7
|| tmonth == 8 || tmonth == 10 || tmonth == 12) {
strZ = "31";
}
if (tmonth == 4 || tmonth == 6 || tmonth == 9 || tmonth == 11) {
strZ = "30";
}
if (tmonth == 2) {
if (leapYear(tyear)) {
strZ = "29";
} else {
strZ = "28";
}
}
strtmonth = tmonth >= 10 ? String.valueOf(tmonth) : ("0" + tmonth);
return tyear + "-" + strtmonth + "-" + strZ;
}
public static String getEndOfMonth(int tyear, int tmonth) {
String strtmonth = null;
String strZ = null;
if (tmonth == 1 || tmonth == 3 || tmonth == 5 || tmonth == 7
|| tmonth == 8 || tmonth == 10 || tmonth == 12) {
strZ = "31";
}
if (tmonth == 4 || tmonth == 6 || tmonth == 9 || tmonth == 11) {
strZ = "30";
}
if (tmonth == 2) {
if (leapYear(tyear)) {
strZ = "29";
} else {
strZ = "28";
}
}
strtmonth = tmonth >= 10 ? String.valueOf(tmonth) : ("0" + tmonth);
return tyear + "-" + strtmonth + "-" + strZ;
}
/**
* 功能:得到指定月份的月初 格式为:xxxx-yy-zz (eg: 2007-12-01)<br>
*
* @param String
* @return String
*/
public static String getStartOfMonth(int tyear, int tmonth) {
String strtmonth = tmonth >= 10 ? String.valueOf(tmonth)
: ("0" + tmonth);
return tyear + "-" + strtmonth + "-" + "01";
}
public static String getStartOfMonth(String str) {
int tyear = Integer.parseInt(getDateByFormat(getDateByStrToYMD(str),
YEAR));
int tmonth = Integer.parseInt(getDateByFormat(getDateByStrToYMD(str),
MONTH));
String strtmonth = tmonth >= 10 ? String.valueOf(tmonth)
: ("0" + tmonth);
return tyear + "-" + strtmonth + "-" + "01";
}
/**
* 功能:得到指定月份的月初 格式为:xxxx-yy-zz (eg: 2007-12-01)<br>
*
* @param String
* @return String
*/
public static int getMonthCountBySQU(String start, String end) {
int syear = Integer.parseInt(getDateByFormat(getDateByStrToYMD(start),
YEAR));
int smonth = Integer.parseInt(getDateByFormat(getDateByStrToYMD(start),
MONTH));
int eyear = Integer.parseInt(getDateByFormat(getDateByStrToYMD(start),
YEAR));
int emonth = Integer.parseInt(getDateByFormat(getDateByStrToYMD(start),
MONTH));
return (eyear - syear) * 12 + (emonth - smonth) + 1;
}
/**
* 获得时间序列 EG:2008-01-01~2008-01-31,2008-02-01~2008-02-29
*/
public static List getMonthSqu(String fromDate, String toDate) {
List list = new ArrayList();
int count = getMonthCountBySQU(fromDate, toDate);
int syear = Integer.parseInt(getDateByFormat(
getDateByStrToYMD(fromDate), YEAR));
int smonth = Integer.parseInt(getDateByFormat(
getDateByStrToYMD(fromDate), MONTH));
int eyear = Integer.parseInt(getDateByFormat(getDateByStrToYMD(toDate),
YEAR));
String startDate = fromDate;
String endDate = "";
for (int i = 1; i <= count; i++) {
if (syear <= eyear) {
startDate = getStartOfMonth(syear, smonth);
endDate = getEndOfMonth(syear, smonth);
list.add(startDate + "~" + endDate);
System.out.println(startDate + "~" + endDate);
if (smonth == 13) {
smonth = 1;
syear++;
}
smonth++;
}
}
return list;
}
/**
* 通过传入的时间来获得所属周内的时间
* @param start
* @param num
* @return
*/
public static String getDateOFWeekByDate(String start, int num) {
Date dd = getDateByStrToYMD(start);
Calendar c = Calendar.getInstance();
c.setTime(dd);
if (num==1) // 返回星期一所在的日期
c.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
else if (num==2) // 返回星期二所在的日期
c.set(Calendar.DAY_OF_WEEK, Calendar.TUESDAY);
else if (num==3) // 返回星期三所在的日期
c.set(Calendar.DAY_OF_WEEK, Calendar.WEDNESDAY);
else if (num==4) // 返回星期四所在的日期
c.set(Calendar.DAY_OF_WEEK, Calendar.THURSDAY);
else if (num==5) // 返回星期五所在的日期
c.set(Calendar.DAY_OF_WEEK, Calendar.FRIDAY);
else if (num==6) // 返回星期六所在的日期
c.set(Calendar.DAY_OF_WEEK, Calendar.SATURDAY);
else if (num==0) // 返回星期日所在的日期
c.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
return getDateByFormatYMD(c.getTime());
}
}
分享到:
相关推荐
其次,对于复杂的数据类型,如日期和时间,Java的Date和Calendar类在Hibernate中可以映射为java.sql.Date、java.sql.Time或java.sql.Timestamp。对于数组和集合,如List、Set、Map等,Hibernate提供了ListType、...
当我们在使用Hibernate时,我们需要了解Java数据类型如何与SQL数据类型对应,以便正确地配置实体类和Hibernate的映射文件(通常是.hbm.xml文件或使用注解的方式)。例如,Java的`int`类型通常对应于SQL的`INTEGER`,...
- `java.util.Date` 和 `java.sql.Date` 对应于 SQL 的 `DATE` - `java.util.Date` 和 `java.sql.Time` 对应于 SQL 的 `TIME` - `java.util.Date`、`java.sql.Timestamp` 和 `java.util.Calendar` 对应于 SQL 的 ...
例如,默认情况下,Hibernate可能会将Date类型映射为`java.sql.Date`,而这个类只包含日期部分,不包含时间。如果需要保留时分秒,应使用`java.sql.Timestamp`。 4. **实体类属性注解**: 在实体类中,对Date类型...
此外,`calendar`和`calendar_date`分别对应`java.util.Calendar`,前者映射为`TIMESTAMP`,后者映射为`DATE`。 二进制数据类型如图片、文件等可以使用`binary`,它映射为`VARBINARY`或`BLOB`;`text`对应长文本,...
Hibernate会自动管理日期类型的转换,这意味着开发者不需要担心`java.util.Date`和`java.sql.Date`之间的转换细节,也不需要关心存储的日期是否包含时间部分。这是因为Hibernate内部实现了相应的映射逻辑,使得开发...
### Java的Date类型转换成MySQL的DateTime类型 在软件开发特别是网络游戏...更推荐的做法是利用JDBC或ORM框架(如Hibernate)提供的日期时间处理功能来自动处理这些转换,以减少手动编码带来的潜在错误和维护成本。
Hibernate的主要作用是作为Java对象和关系数据库之间的桥梁,实现ORM。它将Java对象自动持久化到数据库中,同时也将数据库中的记录映射为Java对象。Hibernate通过内部封装JDBC,提供了一种面向对象的数据库操作方式...
Hibernate是一款强大的Java持久化框架,它为开发人员提供了一种在Java应用中管理和存储数据到关系数据库的标准方式。Hibernate简化了对象关系映射(ORM)的过程,使得开发者无需编写大量的SQL代码,就能实现数据的...
总结来说,通过MyEclipse生成的Hibernate映射文件和POJO类,我们可以轻松地在Java应用中处理"订单信息"数据,而无需手动编写大量数据库操作代码。这种面向对象的方式使得代码更易于理解和维护,同时保持了与数据库的...
在Java 8之前,Hibernate通常使用旧的时间日期类型,如java.util.Date、java.sql.Date、Time和Timestamp。为了与Java 8的新API集成,我们需要创建自定义的注解生成器,使得Hibernate在处理实体时能够自动为特定字段...
在IT行业中,Web开发是关键领域之一,而Struts和Hibernate是两个非常重要的框架,用于构建动态、数据驱动的Web应用程序。在这个实例中,我们将深入探讨如何利用这两个框架实现用户注册功能,即向数据库中插入一条新...
- **日期时间类型**:`java.util.Date` 和 `java.sql.Date` 对应于 `DATE`,`java.util.Date` 和 `java.sql.Time` 映射为 `TIME`,而 `java.util.Date`、`java.sql.Timestamp` 和 `java.util.Calendar` 则映射到 `...
这里的`<class>`标签表示映射到特定的Java类,其属性`name`指定了对应的Java类全名,而`table`和`schema`分别指定了数据库表名和模式名。 #### 设置默认值的方法 要设置字段的默认值,可以利用`<property>`标签内...
- **时间和日期类型**:Hibernate中的 `java.util.Date` 和 `java.sql.Date` 可以映射到MySQL的 `DATE` 和 `TIMESTAMP` 类型,其表示的日期时间格式也有所说明。 ### Hibernate关系配置 Hibernate的配置是通过XML...
2. **实体类(Entity)**:定义Java类来表示数据库中的表,这些类通常会使用Hibernate的注解,如@Entity、@Table、@Id等,来指定表名和主键。 3. **持久化层(Persistence Layer)**:创建一个Hibernate的...
**正文** 标题“Hibernate distribution and annotation”涉及到的是Hibernate ORM框架的一个特定版本及其相关的注解功能。...了解和熟练掌握Hibernate的使用,对于任何Java后端开发人员来说都是至关重要的技能。
Hibernate作为一款强大的对象关系映射(ORM)框架,为Java开发者提供了一套高效且简洁的方式来处理数据库操作。它支持多种查询方式,包括面向对象的查询语言(HQL)、条件查询(Query By Criteria, QBC)、示例查询...
在`User.java`中,通常包含与数据库表字段相对应的属性(如`id`, `name`, `date`),以及对应的getter和setter方法。 4. **配置文件**: 配置文件是Hibernate实现映射的关键,通常以`.hbm.xml`为扩展名,如`User....