/**
* 从字符串类型获取日期Date
* @param dateStr 日期字符串,如:20080321
* @param format 格式化模式,如yyyymmdd 和dateStr保持一致的格式
* @return 返回一个Date类型日期
* @throws Exception
*/
public static Date getDateFromString(String dateStr, String format) {
if (dateStr == null || format == null) {
try {
throw new Exception("数据类型异常" + dateStr + "|" + format);
} catch (Exception e) {
System.err.println("数据类型异常");
}
}
SimpleDateFormat df = new SimpleDateFormat(format);
Date date;
try {
date = df.parse(dateStr);
return date;
} catch (Exception ex) {
return new Date();
}
}
/**
* Calendar类型转换成Date类型日期
*
* @param calendar
* @return
*/
public static Date getDateFromCalendar(Calendar calendar) {
return calendar.getTime();
}
/**
* Timestamp类型转换成Date类型日期
*
* @param timestamp
* @param format
* @return
*/
public static Date getDateFromTimestamp(Timestamp timestamp, String format) {
return getDateFromString(timestamp.toString(), format);
}
/**
* String类型转换成Timestamp类型日期
*
* @param dateStr
* 日期字符串
* @return
* @throws Exception
*/
public static Timestamp getTimestampFromString(String dateStr)
throws Exception {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd 00:00:00.000");
return Timestamp.valueOf(sdf.format(getDateFromString(dateStr,
"yyyyMMdd")));
}
/**
* Calendar类型转换Timestamp类型的日期
*
* @param calendar
* 参数是Calendar类型
* @return
*/
public static Timestamp getTimestampFromCalendar(Calendar calendar) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd 00:00:00.000");
return Timestamp.valueOf(sdf.format(calendar.getTime()));
}
/**
* Date类型转换Timestamp类型的日期
*
* @param date
* @return
*/
public static Timestamp getTimestampFromDate(Date date) {
try {
return getTimestampFromString(getStringFromDate(date, "yyyy-MM-dd"));
} catch (Exception e) {
// System.out.println("获取日期出错");
return null;
}
}
/**
* String(字符串类型)转换成Calendar类型的日期
*
* @param dateStr
* @return
*/
public static Calendar getCalendarFromString(String dateStr) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(getDateFromString(dateStr, "yyyymmdd"));
return calendar;
}
/**
* Date类型转换成Calendar类型日期
*
* @param date
* @return
*/
public static Calendar getCalendarFromDate(Date date) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
return calendar;
}
/**
* Timestamp类型转换成Calendar类型日期
*
* @param timestamp
* @return
*/
public static Calendar getCalendarFromTimestamp(Timestamp timestamp) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(getDateFromTimestamp(timestamp, "yyyymmdd"));
return calendar;
}
/**
* Date类型转换成String(字符串)类型的日期
*
* @param date
* @return
*/
public static String getStringFromDate(Date date, String format) {
SimpleDateFormat sdf = new SimpleDateFormat(format);
return sdf.format(date);
}
/**
* Calendar类型转换成String类型的日期
*
* @param celendar
* @return
*/
public static String getStringFromCalendar(Calendar celendar, String format) {
SimpleDateFormat sdf = new SimpleDateFormat(format);
return sdf.format(celendar.getTime());
}
/**
* Timestamp类型转换成String类型的日期
*
* @param timestamp
* @return
*/
public static String getStringFromTimestamp(Timestamp timestamp) {
return timestamp.toString();
}
/**
* 格式化format
*
* @param dateStr
* @param format
* @return
*/
public static String getStringFormat(String dateStr, String format) {
SimpleDateFormat sdf = new SimpleDateFormat(format);
String result = "";
try {
result = sdf.format(dateStr);
} catch (Exception e) {
System.out.println("出现错误");
}
return result;
}
/**
* 是否为某个月的最后一天
*
* @param days
* @param month
* @param year
* @return
*/
public static boolean isLastDayOfMonth(int days, int month, int year) {
month = month - 1;
int monthCompare = month;
Calendar calendar = Calendar.getInstance();
// calendar.set(year, month, days);
calendar.set(Calendar.DAY_OF_MONTH, days);
calendar.set(Calendar.MONTH, month);
calendar.set(Calendar.YEAR, year);
// System.out.println("月份:"+(calendar.get(Calendar.MONTH)+1));
// System.out.println("几号:"+calendar.get(Calendar.DAY_OF_MONTH));
calendar.add(Calendar.DAY_OF_MONTH, 1);
// System.out.println("月份:"+(calendar.get(Calendar.MONTH)+1));
// System.out.println("几号:"+calendar.get(Calendar.DAY_OF_MONTH));
if (monthCompare != calendar.getInstance().MONTH) {
return true;
}
return false;
}
//
// /**
// * @param args
// * @throws ParseException
// */
// public static void main(String[] args) throws ParseException {
// DateTool dateTool=new DateTool();
// //测试是否为最后一天。。。
// boolean b=dateTool.isLastDayOfMonth(29, 02, 2007);
// if(b){s
// System.out.println("最后一天");
// }else{
// System.out.println("不是最后一天");
// }
// Date date=new Date();
// SimpleDateFormat sdf=new SimpleDateFormat("yyyy-mm-dd");
// sdf.format(date);
//
// Date date1=new Date();
//
// Date date2=new Date();
//
// System.out.println(getTimestampFromDate(date1).toString());
// }
/**
* 获取当前的月份的几号
*
* @return
*/
public static int getCurrentDayOfMonth() {
return Calendar.getInstance().get(Calendar.DAY_OF_MONTH);
}
/**
* 获取当前的月份
*
* @return
*/
public static int getCurrentMonth() {
return Calendar.getInstance().get(Calendar.MONTH);
}
/**
* 获取当前的年
*
* @return
*/
public static int getCurrentYear() {
return Calendar.getInstance().get(Calendar.YEAR);
}
/**
* 获取当前的日期是一年中的第几天
*
* @return
*/
public static int getCurrentDayOfYear() {
return Calendar.getInstance().get(Calendar.DAY_OF_YEAR);
}
/**
* 获取当前的日期在当前月中是第几周
*
* @return
*/
public static int getCurrentWeekOfMonth() {
return Calendar.getInstance().get(Calendar.WEEK_OF_MONTH);
}
/**
* 获取当前的日期在当前年里的第几周
*
* @return
*/
public static int getCurrentWeekOfYear() {
return Calendar.getInstance().get(Calendar.WEEK_OF_YEAR);
}
/**
* 获取指定calendar的月中的几号
*
* @param calendar
* @return 返回月份值,是一个int型数据
*/
public static int getDayOfMonth(Calendar calendar) {
return calendar.get(Calendar.DAY_OF_MONTH);
}
/**
* 获取指定calendar的月份
*
* @param calendar
* @return 返回月份值,是一个int型数据
*/
public static int getMonth(Calendar calendar) {
return calendar.get(Calendar.MONTH) + 1;
}
/**
* 获取指定calendar的年
*
* @param calendar
* @return 返回年值,是一个int型数据
*/
public static int getYear(Calendar calendar) {
return calendar.get(Calendar.YEAR);
}
/**
* 获取指定calendar中年份中的第几天
*
* @param calendar
* @return
*/
public static int getDayOfYear(Calendar calendar) {
return calendar.get(Calendar.DAY_OF_YEAR);
}
/**
* 获取指定calendar的月中的第几周
*
* @param calendar
* @return
*/
public static int getWeekOfMonth(Calendar calendar) {
return calendar.get(Calendar.WEEK_OF_MONTH);
}
/**
* 获取指定calendar的年中的第几周
*
* @param calendar
* @return
*/
public static int getWeekOfYear(Calendar calendar) {
return calendar.get(Calendar.WEEK_OF_YEAR);
}
/**
* 得到两个日期之间相差多少天
* @param beginDate 开始日期
* @param endDate 结束日期
* @return
*/
public static int dateDiff(String beginDate,String endDate){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date = null;
try {
date = sdf.parse(endDate);
} catch (ParseException e) {
date = new Date();
e.printStackTrace();
}
long end = date.getTime();
try {
date = sdf.parse(beginDate);
} catch (ParseException e) {
date = new Date();
e.printStackTrace();
}
long begin = date.getTime();
long day = (end-begin)/(1000*3600*24); //除1000是把毫秒变成秒
return Integer.parseInt(Long.toString(day));
}
/**
* 日期推迟
*
* @param date
* 需要推迟的日期
* @param dayNumber
* 需要推迟的天数
* @return 返回新的日期
*/
public static Date dateAdd(Date date, int dayNumber) {
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
calendar.add(Calendar.DAY_OF_MONTH, dayNumber);
return calendar.getTime();
}
/**
* 得到某种类型的中间的所有日期.格式为"yyyy-MM-dd"
* @param beginDate
* @param endDate
* @return
*/
public static String[] getDaysByRang(String beginDate,String endDate){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
//得到两个日期间相差多少天
int num = dateDiff(beginDate,endDate);
if(num<0){
//颠倒一下日期
String tmp = beginDate;
beginDate = endDate;
endDate = tmp;
num = 0-num;
}
String[] result = {} ;
Calendar cal = Calendar.getInstance() ;
try {
cal.setTime(sdf.parse(beginDate));
} catch (ParseException e) {
e.printStackTrace();
}
num = num + 1; //把开始和结束日期都包含进去
result = new String[num];
for(int i=0;i<num;i++){
if(i>0) cal.add(Calendar.DAY_OF_YEAR, 1);
result[i] = sdf.format(new Date(cal.getTimeInMillis()));
}
return result;
}
/**
* 得到最近num天的全部日期
* 说明:
* 1.日期是从昨天开始算的.
* 2.如果num=2 , 今天的日期是2008-03-14 ,则返回的结果为 2008-03-12、2008-03-13
* @param num
* @return
*/
public static String[] getDaysByNum(int num){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String[] result = {} ;
Calendar cal = Calendar.getInstance() ;
//最近一周
result = new String[num];
for(int i=num;i>0;i--){
cal.add(Calendar.DAY_OF_YEAR, -1);
result[i-1] = sdf.format(new Date(cal.getTimeInMillis()));
}
return result;
}
/**
* 得到最近num天的全部日期
* 说明:
* 1.日期是从昨天开始算的.
* 2.如果num=2 , 今天的日期是2008-03-14 ,则返回的结果为 2008-03-12、2008-03-13
* @param num
* @return
*/
public static String[] getDaysByNum(int num,String date){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String[] result = {} ;
Calendar cal = Calendar.getInstance() ;
cal.setTime(getDateFromString(date, "yyyy-MM-dd"));
//最近一周
result = new String[num];
for(int i=num;i>0;i--){
cal.add(Calendar.DAY_OF_YEAR, -1);
result[i-1] = sdf.format(new Date(cal.getTimeInMillis()));
}
return result;
}
/**
* 得到最近num天的全部日期
* 说明:
* 1.日期是从今天开始算的.
* 2.如果num=2 , 今天的日期是2008-03-14 ,则返回的结果为 2008-03-13、2008-03-14
* @param num
* @return
*/
public static String[] getDaysByBefore(int num,String date){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String[] result = {} ;
Calendar cal = Calendar.getInstance() ;
cal.setTime(getDateFromString(date, "yyyy-MM-dd"));
cal.add(Calendar.DAY_OF_YEAR, 1);
//最近num的日期,包括date日期
result = new String[num];
for(int i=num;i>0;i--){
cal.add(Calendar.DAY_OF_YEAR, -1);
result[i-1] = sdf.format(new Date(cal.getTimeInMillis()));
}
return result;
}
分享到:
相关推荐
C++上机实验:类的定义与应用。定义一个时间类。
例如,当我们将两个时间对象相加时,使用`+`运算符比调用一个名为“addTime”的函数更直观。C++允许重载的运算符包括大多数二元(双目)和一元运算符,如`+`、`-`、`*`、`/`、`++`、`--`等,但有些不能重载,比如`::...
声明一个时间类,时间类中有3个私有数据成员(Hour, Minute, Second)和两个公有成员函数(SetTime和Print_Time)。SetTime根据传递的3个参数为对象设置时间;Print_Time负责将对象表示的时间显示输出.
定义一个时间类time
定义一个时间类CTime,c。输入一个起始时间和一个结束时间(起始时间早于结束时间),通过运算符重载-(减号),计算这两个时间相隔多少秒钟。说明:这两个时间在同一小时之内,且采用60分钟60秒钟的计时分式,即从00:...
1 、定义一个时间类Time,有三个私有成员变量Hour、Minute、Second,定义构造函数、析构函数以及用于改变、获取、输出时间信息的公有函数,主函数中定义时间对象,并通过调用各种成员函数完成时间的设定、改变、获取...
1.编写一个控制台应用程序,定义并使用一个时间类,该类包含时、分、秒字段与属性,具有将时间增加1秒、1分和1小时的方法,具有分别显示时、分、秒和同时显示时分秒的方法。 2.编写一个控制台应用程序,程序中有两个...
本实验课程试题要求我们定义一个时间类Time,能够提供和设置由时、分、秒组成的时间,并编写应用程序来输出该对象提供的时间。在本实验中,我们将使用C++语言来实现该时间类,并使用多文件编程将类的定义和实现分离...
一个CTime类.一个CTime类.一个CTime类.一个CTime类.一个CTime类.
一个可以判断多少时间前的类 欢迎大家一起研究
定义一个时间类用来保存时间,通过重载操作符“+”实现两个时间的相加
首先,我们需要定义一个名为`Time`的类,它包含三个私有成员变量`Hour`、`Minute`和`Second`,分别表示小时、分钟和秒。为了能够操作这些成员,我们需要提供公共的构造函数、析构函数以及用于设置、获取和显示时间...
在本文中,我们将深入探讨“VC2003一个时间运算类测试工程”这个主题,它是一个使用Visual C++ .NET 2003编写的软件项目,专注于时间操作的类库封装。这个工程旨在提供一种高效且方便的方式来处理时间的加减运算,这...
CTime 类是 MFC 中的一个时间类,提供了许多有用的成员函数,例如: * GetCurrentTime:获取当前时间。 * Set:设置时间。 * GetHour、GetMinute、GetSecond:获取时间的小时、分钟、秒。 例如,我们可以使用 ...
描述中提到的“博文链接:https://tiantao1812.iteye.com/blog/1493648”,这个链接指向了一个特定的博客文章,虽然没有具体的描述内容,但我们可以推测这篇博客详细介绍了这个时间格式化工具类的设计、实现和使用...
标题为"一个完整的PHP时间类.zip"的压缩包文件,很显然包含了一个自定义的时间类,用于扩展PHP的内置功能,提供更方便、灵活的日期和时间操作。 首先,让我们理解PHP中的日期和时间处理基础。PHP内建的DateTime类是...
(1)定义一个时间类Time,能提供时、分、秒组成的时间,并提供时间增加的方法(按秒); (2)定义一个日期类Date,记录年、月、日,并提供日期增加的方法(按天); (3)由类Time和日期类Date,派生出DateTime类...