package test;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class Test01 {
/**
* 計算兩個日期相差的天數
* @param startday
* @param endday
* @return
*/
public static int getIntervalDays(Calendar startday,Calendar endday){
if(startday.after(endday)){
Calendar cal=startday;
startday=endday;
endday=cal;
}
long sl=startday.getTimeInMillis();
long el=endday.getTimeInMillis();
long ei=el-sl;
return (int)(ei/(1000*60*60*24));
}
/**
* 計算兩個日期相差的天數
* @param startday
* @param endday
* @return
*/
public static int getIntervalDay(Date startday,Date endday){
if(startday.after(endday)){
Date cal=startday;
startday=endday;
endday=cal;
}
long sl=startday.getTime();
long el=endday.getTime();
long ei=el-sl;
return (int)(ei/(1000*60*60*24));
}
/**
* 精確計算兩個日期相隔天數
* @param Calendar d1
* @param Calendar d2
* @return
*/
public static int getDaysBetween(Calendar d1, Calendar d2) {
if (d1.after(d2)) {
java.util.Calendar swap = d1;
d1 = d2;
d2 = swap;
}
int days = d2.get(Calendar.DAY_OF_YEAR) - d1.get(Calendar.DAY_OF_YEAR);
int y2 = d2.get(Calendar.YEAR);
if (d1.get(Calendar.YEAR) != y2) {
d1 = (Calendar) d1.clone();
do {
days += d1.getActualMaximum(Calendar.DAY_OF_YEAR);//得到当年的实际天数
d1.add(Calendar.YEAR, 1);
} while (d1.get(Calendar.YEAR) != y2);
}
return days;
}
public static void main(String[] args) {
/**
* Date转换成Calendar
*/
System.out.println("--Date转换成Calendar--");
Date now = new Date();
System.out.println(now);//输出结果是:Wed Mar 04 10:38:38 CST 2015
Calendar cal=Calendar.getInstance();
cal.setTime(now);
System.out.println(cal);//输出结果是:java.util.GregorianCalendar[time=1425436718853,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2015,MONTH=2,WEEK_OF_YEAR=10,WEEK_OF_MONTH=1,DAY_OF_MONTH=4,DAY_OF_YEAR=63,DAY_OF_WEEK=4,DAY_OF_WEEK_IN_MONTH=1,AM_PM=0,HOUR=10,HOUR_OF_DAY=10,MINUTE=38,SECOND=38,MILLISECOND=853,ZONE_OFFSET=28800000,DST_OFFSET=0]
System.out.println("--------------------");
System.out.println();
/**
* Calendar转换成date
*/
System.out.println("--Calendar转换成date--");
Calendar cale=Calendar.getInstance();
Date date=cale.getTime();
System.out.println(date);
System.out.println("--------------------");
System.out.println();
/**
* Date格式化输出日期时间
*
* 注意:SimpleDateFormat类格式化一个字符串时,
* 可根据需要调用 format() 或 parse() 函数;只不过format()
* 返回String类型,parse()返回java.util.Date类型
*/
System.out.println("--Date格式化输出日期时间--");
SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
String time=df.format(now);
System.out.println(time); //输出结果是:2015-03-04 10:38:38
System.out.println("--------------------");
System.out.println();
/**
* 字符串转换成Date类型
*/
System.out.println("--字符串转换成Date类型--");
try {
//法一:
System.out.println("--字符串转换成Date类型法一:--");
Date dt = null;
DateFormat dft=DateFormat.getDateInstance();
dt = dft.parse("2015-3-3 10:10:10");
System.out.println(dt); //输出结果是:Tue Mar 03 00:00:00 CST 2015
System.out.println(dft.format(dt));//输出结果是:2015-3-3
//法二:
System.out.println("--字符串转换成Date类型法二:--");
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd ");
Date dat=sdf.parse("2015-3-3 ");
System.out.print(sdf.format(dt)); //输出结果是:2015-03-03
} catch (Exception e) {
e.getStackTrace();
}
System.out.println();
/**
* 计算某一年的某一月的天数
* 注:在使用set方法之前,必须先clear一下,否则信息会继承系统当前时间
*/
Calendar calTime=Calendar.getInstance();
calTime.clear();
calTime.set(Calendar.YEAR,2015); //year 为 int
calTime.set(Calendar.MONTH,2-1);//注意,Calendar对象默认一月为0
int day=calTime.getActualMaximum(Calendar.DAY_OF_MONTH);//本月份的天数
System.out.println("2015年2月的天数为: " + day);
System.out.println();
/**
* 计算某一天是一年中的第几个星期
* 日历中月份默认从0开始计算,2即为3月份
*/
Calendar calen=Calendar.getInstance();
calen.set(Calendar.YEAR, 2015);
calen.set(Calendar.MONTH, 2);
calen.set(Calendar.DAY_OF_MONTH, 3);
int weekno=calen.get(Calendar.WEEK_OF_YEAR);
System.out.println("2015年3月3日是第几周: " + weekno);
System.out.println();
/**
* 计算一年中第几个星期是几号
* 2015年第10周是几号
*/
SimpleDateFormat dft=new SimpleDateFormat("yyyy-MM-dd");
Calendar calendar=Calendar.getInstance();
calendar.set(Calendar.YEAR, 2015);
calendar.set(Calendar.WEEK_OF_YEAR, 10);
calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
System.out.println("2015年第10周是几号: " + dft.format(calendar.getTime()));
System.out.println();
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
Calendar calend=Calendar.getInstance();
calend.set(Calendar.YEAR, 2006);
calend.set(Calendar.MONTH, 8);
calend.set(Calendar.DAY_OF_MONTH, 3);
calend.add(Calendar.DATE, -4);
Date date1=cal.getTime();
System.out.println(sdf.format(date));
calend.add(Calendar.DATE, 4);
date1=calend.getTime();
System.out.println(sdf.format(date));
/**
* 計算日期時間差,參數為Calendar
*/
Date nowDate1 = new Date();
Calendar calendarNow = Calendar.getInstance();
calendarNow.setTime(nowDate1);
Calendar calendarBefore = Calendar.getInstance();
calendarBefore.clear();
calendarBefore.set(Calendar.YEAR,2012); //year 为 int
calendarBefore.set(Calendar.MONTH,6);//注意,Calendar对象默认一月为0
calendarBefore.set(Calendar.DAY_OF_MONTH, 27);
int count = 0;
count = getIntervalDays(calendarBefore,calendarNow);
System.out.println(count);
int con = 0;
con = getDaysBetween(calendarBefore,calendarNow);
System.out.println("精確計算: " + con);
/**
* 計算日期時間差,參數為Date
*/
System.out.println("--計算日期時間差,參數為Date--");
try {
Date nowDate2 = new Date();
SimpleDateFormat sdfDFormat = new SimpleDateFormat("yyyy-MM-dd");
Date dat0=sdfDFormat.parse("2012-7-29");
sdfDFormat.format(dat0);
System.out.println(dat0);
int days = 0;
days = getIntervalDay(dat0,nowDate2);
System.out.println("days=" + days);
} catch (Exception e) {
// TODO: handle exception
e.getStackTrace();
}
try {
//String 和 Date ,Long 之间相互转换
SimpleDateFormat sdft = new java.text.SimpleDateFormat("M/dd/yyyy hh:mm:ss a",java.util.Locale.US);
Date d = sdft.parse("3/4/2015 10:31:37 AM");
long dvalue=d.getTime();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String mDateTime1=formatter.format(d);
System.out.println(mDateTime1);
//年月周求日期
SimpleDateFormat formatter2 = new SimpleDateFormat("yyyy-MM F E");
Date date2= formatter2.parse("2015-03 1 星期五");
SimpleDateFormat formatter3 = new SimpleDateFormat("yyyy-MM-dd");
String mydate2=formatter3.format(date2);
System.out.println("年月周求日期:" + mydate2);
} catch (Exception e) {
// TODO: handle exception
}
}
}
Date类型转换
最新推荐文章于 2023-05-13 21:14:35 发布