锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class Test {
public static void main(String[] args) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Long startM = sdf.parse("2009-1-14").getTime();
Long endM = sdf.parse("2010-1-14").getTime();
long result = (endM - startM) / (24 * 60 * 60 * 1000);
System.out.println("宸?" + result + "澶?);
Date startDate = sdf.parse("2009-01-14");
Calendar startTime = Calendar.getInstance();
startTime.clear();
startTime.setTime(startDate);
for (int i = 0; i < (int)result;i++) {
String str = startTime.get(Calendar.YEAR) + "-"
+ startTime.get(Calendar.MONTH) + "-"
+ startTime.get(Calendar.DAY_OF_MONTH);
System.out.println(str);
startTime.add(Calendar.DAY_OF_YEAR, 1);
}
}
}
package demo;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
/**
* 閬嶅巻涓や釜鏃ユ湡涔嬮棿澶╂暟鐨勭畻娉?br />
*
*/
public class MyTest {
public static void main(String[] args) throws ParseException {
String start = "2007-01-27";
String end = "2008-03-04";
//瀛楃涓茶漿鎹㈡垚鏃ユ湡
SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd");
Date startDate=format.parse(start);
Calendar startTime=Calendar.getInstance();
startTime.clear();
startTime.setTime(startDate);
int startYear = startTime.get(Calendar.YEAR);
int startMonth = startTime.get(Calendar.MONTH);
int startDay = startTime.get(Calendar.DAY_OF_MONTH);
Date endDate=format.parse(end);
Calendar endTime=Calendar.getInstance();
endTime.clear();
endTime.setTime(endDate);
int endYear = endTime.get(Calendar.YEAR);
int endMonth = endTime.get(Calendar.MONTH);
int endDay = endTime.get(Calendar.DAY_OF_MONTH);
System.out.println("娉ㄦ剰瑗挎柟鐨勬湀浠戒粠0鍒?1錛屼腑鍥界殑鏈堜喚浠?鍒?2");
System.out.println("涓嬮潰杈撳叆鐨勬槸涓浗鐨勬棩鏈?娉ㄦ剰鍏朵腑鐨勮漿鎹㈤棶棰?);
System.out.println("start date : " + start);
System.out.println("end date : " + end);
int count = 0;
for (int x = startYear; x <= endYear; x++) {
//緗楅┈鍘嗘硶浜х敓騫翠喚鍏厓1582騫?br />
int gregorianCutoverYear = 1582;
boolean isLeapYear = x >= gregorianCutoverYear ?
((x%4 == 0) && ((x%100 != 0) || (x%400 == 0))) :
(x%4 == 0);
//鍒ゆ柇鏄惁鏄棸騫?br />
//java鏂規硶
//boolean isLeapYear = (new GregorianCalendar()).isLeapYear(x);
String isBigYear = "鏄鉤騫?;
if (isLeapYear) {
isBigYear = "鏄棸騫?;
}
System.out.println(x + "騫? + isBigYear);
//鑾峰彇寮濮嬫湀鐨勬渶澶уぉ鏁?br />
//java鏂規硶
//SimpleDateFormat aFormat=new SimpleDateFormat("yyyy-MM-dd");
//Date date = aFormat.parse(start);
//Calendar time = Calendar.getInstance();
//time.clear();
//time.setTime(date);
//int max=time.getActualMaximum(Calendar.DAY_OF_MONTH);//鏈湀浠界殑澶╂暟
//System.out.println(max);
//鑾峰彇寮濮嬫湀鐨勬渶澶уぉ鏁幫紱澶ф湀鏄?錛?錛?錛?錛?錛?0錛?2錛涘皬鏈堟槸4錛?錛?錛?1錛涚壒孌婃湀鏄?
int max = 0;
if (startMonth == 1) {
if (isLeapYear) {
max = 29;
}
if (!isLeapYear) {
max = 28;
}
}
if (startMonth == 3 || startMonth == 5 || startMonth == 8 || startMonth == 10) {
max = 30;
}
if (startMonth == 0 || startMonth == 2 || startMonth == 4 ||
startMonth == 6 || startMonth == 7 || startMonth == 9 || startMonth ==
11) {
max = 31;
}
//寰幆姣忎釜鏈?br />
//濡傛灉鍦ㄦ棩鏈熻寖鍥村唴鏈堜喚寰幆鏃惰嚜澧炲埌浜嗕竴騫寸殑鏈鍚庝竴涓湀灝卞皢鏈堜喚鍒濆鍖栧埌涓鏈堜喚
int y = 0;
//濡傛灉鏄紑濮嬫棩鏈熺殑絎竴涓勾鐨勬湀鏁板氨浠庡紑濮嬫湀鏁板驚鐜?br />
if (x == startYear) {
y = startMonth;
}
for (; y < 12; y++) {
//鑾峰彇褰撴湀鐨勬渶澶уぉ鏁幫紱澶ф湀鏄?錛?錛?錛?錛?錛?0錛?2錛涘皬鏈堟槸4錛?錛?錛?1錛涚壒孌婃湀鏄?
max = 0;
if (y == 1) {
if (isLeapYear) {
max = 29;
}
if (!isLeapYear) {
max = 28;
}
}
if (y == 3 || y == 5 || y == 8 || y == 10) {
max = 30;
}
if (y == 0 || y == 2 || y == 4 || y == 6 || y == 7 || y == 9 || y == 11) {
max = 31;
}
int ty = y + 1;
System.out.println(x + "騫? + ty + "鏈?);
//寰幆姣忎竴澶?br />
int z = 1;
//濡傛灉鏄紑濮嬫棩鏈熺殑絎竴涓湀鐨勫ぉ鏁板氨浠庡紑濮嬪ぉ鏁板驚鐜?br />
if (x == startYear && y == startMonth) {
z = startDay;
}
for (; z <= max; z++) {
count++;
System.out.println( x + "騫? + ty + "鏈? + z + "鏃?);
if (x == endYear && y == endMonth && z == endDay) {
break;
}
}
//濡傛灉宸茬粡閬嶅巻榪囦簡鎴嚦鏃ユ湡鐨勬渶鍚庢湀浠藉氨涓鏈堜喚鐨勫驚鐜?br />
if (x == endYear && y == endMonth) {
break;
}
}
}
System.out.println(start + " 鍒?" + end + " 鐨勫ぉ鏁板樊錛? + count);
}
Calendar鍙婂叾瀛愮被GregorianCalendar:鏃ュ巻綾伙紝鏃ユ湡鎿嶄綔錛屽垵濮嬪寲鐗瑰畾鏃ユ湡銆?/span>
DateFormat鍙婂叾瀛愮被SimpleDateformat: 鏃ユ湡鏍煎紡鍖栵紝鏃ユ湡鐨勯粯璁ゆ樉紺烘柟寮忎笉閫傚悎涓浗浜猴紝鎵浠ラ渶瑕佹牸寮忓寲涓轟腑鍥戒漢甯哥敤鐨勬牸寮忔潵鏄劇ず銆?/span>
鍙栧緱褰撴湡鏃ユ湡, Date date=new Date();
鍒濆鍖栫壒瀹氭棩鏈?鍋囪鎴戜滑瑕佸緱鍒版棩鏈熶負2006-10-27鏃ョ殑瀵硅薄錛岄渶瑕佹寜濡備笅鏂瑰紡鑾峰緱銆?/span>
Calendar cal = new GregorianCalendar(2006, 9, 27,0,0,0);
Date date = cal.getTime();
娉ㄦ剰:date,getTime()鍙栧緱鐨勬槸褰撴湡鏃墮棿鐨勬縐掓暟,鏈堜喚姣斿疄闄呯殑鍑?
GregorianCalendar鏋勯犳柟娉曞弬鏁頒緷嬈′負錛氬勾錛屾湀-1錛屾棩錛屽皬鏃訛紝鍒嗭紝縐?nbsp;
鏍煎紡鍖栦負鎴戜滑鐔熸倝鐨勬柟寮忔樉紺猴細
DateFormat format=new SimpleDateFormat("yyyy-MM-dd HH;mm:ss");
String chinesedate = format.format(date);
鏃ユ湡 騫達紝鏈堬紝鏃ワ紝鍒嗭紝縐掔殑鍙栧緱
Calendar cal = Calendar.getInstance();
int year = cal.get(Calendar.YEAR);
int month=cal.get(Calendar.MONTH)+1;
int day = cal.get(Calendar.DAY_OF_MONTH);
int hour = cal.get(Calendar.HOUR_OF_DAY);
int minute = cal.get(Calendar.MINUTE);
int second = cal.get(Calendar.SECOND);
娉ㄦ剰錛氭湀浠斤紝瀹為檯鐨勬湀浠借姣擟lendar寰楀埌鐨勫姞1錛屽洜涓簀ava鏈堜喚鏄粠0~11
2.鏃ユ湡鍩烘湰鎿嶄綔
寰楀埌涓や釜鏃ユ湡鐩稿樊鐨勫ぉ鏁?/span>
Date endDate=..
Date startDate = ...
鐩稿樊澶╂暟 int days=(int) ((endDate.getTime()-startDate.getTime())/(1000*24*60*60)+0.5);
寰楀埌鏌愪釜鏈堢殑澶╂暟
Calendar cal = Calendar.getInstance();
int month=cal.getActualMaximum(Calendar.DAY_OF_MONTH);
鏃ユ湡鍔?澶?/span>
cal.add(Calendar.DATE, 1)錛?/鏃ユ湡鍔?澶?/span>
Calendar.YEAR,Calendar.MONTH,Calendar.WEEK_OF_YEAR),鍒嗗埆鏄勾錛屾湀錛屽懆
3錛宩ava.sql,Date()鍜宩ava.util.Date();
鍓嶉潰鎴戜滑璇寸殑閮芥槸java.util.Date綾伙紝java.sql.Date綾繪槸鎿嶄綔鏁版嵁搴撶敤鐨勬棩鏈熺被鍨?/span>
java.util.Date date=....
java.sql.Date sqldate=new java.sql.Date(date.getTime());
涔熷彲浠ヨ繖鏍鳳細String date="2005-11-10";
java.sql.Date sqlDate=java.sql.Date.valueOf(date);
4,瀹氭椂鍣?/span>
a,緙栧啓綾?瀹炵幇TimeTask鎺ュ彛錛屽畾鏃舵墽琛岀殑浠g爜鍐欏叆run()鏂規硶涓?/span>
b. timer.schedule(TimeTask瀛愮被瀵硅薄, 寮濮嬫墽琛岀殑鏃ユ湡, 鍛ㄦ湡);
鍛ㄦ湡涓烘縐掓暟
渚嬪瓙:
綾籑yTask:
import java.util.*;
public class MyTask extends TimerTask {
public void run() {
System.out.println("MyTask 姝e湪鎵ц...");
}
}
綾籘imerDemo:
import java.util.Timer;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.Date;
public class TimerDemo {
public static void main(String[] args) {
Timer timer = new Timer();
MyTask task = new MyTask();
Calendar cal = new GregorianCalendar(2006, 9, 28, 12, 49, 0);
Date date = cal.getTime();
System.out.println("date :" + date.toLocaleString());
timer.schedule(task, date, 1000);
}
}
***********************************************************************************************
鍦ㄦ煇浜涙椂鍊? 鎴戜滑闇瑕佸疄鐜拌繖鏍風殑鍔熻兘,鏌愪竴紼嬪簭闅斾竴孌墊椂闂存墽琛屼竴嬈?鑰岃繖涓浜嬫儏鐢辯郴緇熸湰韜潵瀹屾垚,騫朵笉鏄漢涓虹殑瑙﹀彂,鎴戜滑涓鑸彲縐版涓哄畾鏃跺櫒浠誨姟.
銆銆榪欑被鎶鏈富瑕佸簲鐢ㄥ埌閭d簺闇瑕佽繘琛屽悗鍙版暣鐞嗘暟鎹殑緋葷粺涓?姣斿璇存暟鎹粨鍌?鏁版嵁鎸栨帢絳?
銆銆鍏跺疄鍒癑ava涓?瀹炵幇璧鋒潵鏄潪甯哥畝鍗曠殑,涓嬮潰鎴戜滑浠ユ瘡闅?縐掗挓鎵撳紩涓鍙?Hello world"涓轟緥錛?/span>
import java.util.TimerTask;
public class TimeTast extends TimerTask ...{
// 鍦ㄨ繖閲屽啓浣犺瀹氭椂鎵ц鐨勬柟娉?/span>
public void run() ...
System.out.println("Hello World!");
}
}
import java.util.Date;
import java.util.Timer;
/** *//**
* 瀹氭椂鍣ㄦ祴璇?/span>
* @author FeGe
*/
public class Test ...{
public void execute() ...{
Timer timer = new Timer();
TimeTast myTimeTask = new TimeTast();
Date date = new Date();
long timestamp = 5000;
/** *//**
* myTimeTask 鎸囧畾鎵ц鐨勭嚎紼?date 鎸囧畾絎竴嬈℃棩鏈熸墽琛岀殑鏃墮棿 timestamp 鎸囧畾姣忔牸澶氫箙鍐嶆鎵ц涓嬈?/span>
*/
timer.schedule(myTimeTask, date, timestamp);
}
public static void main(String[] args) ...{
Test t = new Test();
t.execute();
}
}
銆銆涓涓渶綆鍗曠殑瀹氭椂鍣ㄤ換鍔″氨綆楀畬鎴愪簡銆傛槸涓嶆槸澶畝鍗曚簡鐐瑰憿錛屽叾瀹炲氨榪欎箞綆鍗曘?/span>
**************************************************************************************************************
涓嬮潰灝盨ervlet渚﹀惉鍣ㄧ粨鍚圝ava瀹氭椂鍣ㄦ潵璁茶堪鏁翠釜瀹炵幇榪囩▼銆傝榪愮敤Servlet渚﹀惉鍣ㄩ渶瑕佸疄鐜?javax.servlet.ServletContextListener鎺ュ彛錛屽悓鏃跺疄鐜板畠鐨刢ontextInitialized (ServletContextEvent event)鍜宑ontextDestroyed(ServletContextEvent event)涓や釜鎺ュ彛鍑芥暟銆傝冭檻瀹氭椂鍣ㄦ湁涓緩绔嬪拰閿姣佺殑榪囩▼錛岀湅浜嗗墠闈袱涓帴鍙e嚱鏁幫紝灝變笉瀹圭疆鐤戠殑鎶婂緩绔嬬殑榪囩▼緗叆 contextInitialized錛屾妸閿姣佺殑榪囩▼緗叆contextDestroyed浜嗐?/span>
鎴戞妸ServletContextListener鐨勫疄鐜扮被鍙栧悕涓篊ontextListener,鍦ㄥ叾鍐呮坊鍔犱竴涓畾鏃跺櫒錛岀ず渚嬩唬鐮佸涓嬫墍紺猴紙涓鴻冭檻綃囧箙錛屼粎鎻愪緵閮ㄥ垎浠g爜渚涜鑰呭弬鑰冿級錛?/span>
private java.util.Timer timer = null;
public void contextInitialized(ServletContextEvent event) {
timer = new java.util.Timer(true);
event.getServletContext().log("瀹氭椂鍣ㄥ凡鍚姩");
timer.schedule(new MyTask(event.getServletContext()), 0, 60*60*1000);
event.getServletContext().log("宸茬粡娣誨姞浠誨姟璋冨害琛?);
}
public void contextDestroyed(ServletContextEvent event) {
timer.cancel();
event.getServletContext().log("瀹氭椂鍣ㄩ攢姣?);
}
浠?涓婁唬鐮佷腑, timer.schedule(new MyTask(event.getServletContext()), 0, 60*60*1000)榪欎竴琛屼負瀹氭椂鍣ㄨ皟搴﹁鍙ワ紝鍏朵腑MyTask鏄嚜瀹氫箟闇瑕佽璋冨害鐨勬墽琛屼換鍔★紙鍦ㄦ垜鐨勮儲鏀挎暟鎹腑蹇冮」鐩腑灝辨槸鎶ヨ〃璁$畻寮曟搸鍏ュ彛錛夛紝浠?java.util.TimerTask緇ф壙錛屼笅闈細閲嶇偣璁茶堪錛岀涓変釜鍙傛暟琛ㄧず姣忓皬鏃?鍗?0*60*1000姣)琚Е鍙戜竴嬈★紝涓棿鍙傛暟0琛ㄧず鏃犲歡榪熴?鍏跺畠浠g爜鐩稿綋綆鍗曪紝涓嶅啀璇︾粏璇存槑銆?/span>
涓嬮潰浠嬬粛MyTask鐨勫疄鐜幫紝涓婇潰鐨勪唬鐮佷腑鐪嬪埌浜嗗湪鏋勯燤yTask鏃訛紝浼犲叆浜?javax.servlet.ServletContext綾誨瀷鍙傛暟,鏄負璁板綍Servlet鏃ュ織鏂逛究鑰屼紶鍏ワ紝鍥犳闇瑕侀噸杞組yTask鐨勬瀯閫犲嚱鏁幫紙鍏剁埗 綾籮ava.util.TimerTask鍘熸瀯閫犲嚱鏁版槸娌℃湁鍙傛暟鐨勶級銆傚湪timer.schedule()鐨勮皟搴︿腑,璁劇疆浜嗘瘡灝忔椂璋冨害涓嬈?鍥犳濡傛灉鎯沖疄 鐜拌皟搴︿換鍔℃瘡24灝忔椂琚墽琛屼竴嬈★紝榪橀渶瑕佸垽鏂竴涓嬫椂閽熺偣錛屼互甯擱噺C_SCHEDULE_HOUR琛ㄧず(鏅氫笂12鐐癸紝涔熷嵆0鐐?銆傚悓鏃朵負闃叉24灝忔椂鎵ц涓?鏉ワ紝浠誨姟榪樻湭鎵ц瀹岋紙褰撶劧錛屼竴鑸換鍔℃槸娌℃湁榪欎箞闀跨殑錛夛紝閬垮厤絎簩嬈″張琚皟搴︿互寮曡搗鎵ц鍐茬獊錛岃緗簡褰撳墠鏄惁姝e湪鎵ц鐨勭姸鎬佹爣蹇梚sRunning銆傜ず渚嬩唬 鐮佸涓嬫墍紺猴細
private static final int C_SCHEDULE_HOUR = 0;
private static boolean isRunning = false;
private ServletContext context = null;
public MyTask(ServletContext context) {
this.context = context;
}
public void run() {
Calendar cal = Calendar.getInstance();
if (!isRunning) {
if (C_SCHEDULE_HOUR == cal.get(Calendar.HOUR_OF_DAY)) {
isRunning = true;
context.log("寮濮嬫墽琛屾寚瀹氫換鍔?);
//TODO 娣誨姞鑷畾涔夌殑璇︾粏浠誨姟錛屼互涓嬪彧鏄ず渚?/span>
int i = 0;
while (i++ 錛?10) {
context.log("宸插畬鎴愪換鍔$殑" + i + "/" + 10);
}
isRunning = false;
context.log("鎸囧畾浠誨姟鎵ц緇撴潫");
}
} else {
context.log("涓婁竴嬈′換鍔℃墽琛岃繕鏈粨鏉?);
}
}
涓婇潰浠g爜涓?//TODO……"涔嬩笅鍥涜鏄湡姝h璋冨害鎵ц鐨勬紨紺轟唬鐮?鍦ㄦ垜鐨勮儲鏀挎暟鎹腑蹇冮」鐩腑灝辨槸鎶ヨ〃璁$畻榪囩▼)錛屾偍鍙互鎹㈡垚鑷繁甯屾湜鎵ц鐨勮鍙ャ?/span>
鍒拌繖鍎匡紝ServletContextListener鍜孧yTask鐨勪唬鐮侀兘宸插畬鏁翠簡銆傛渶鍚庝竴姝ュ氨鏄妸ServletContextListener閮ㄧ講鍒版偍鐨刉eb宸ョ▼涓幓錛屽湪鎮ㄥ伐紼嬬殑web.xml閰嶇疆鏂囦歡涓姞鍏ュ涓嬩笁琛岋細
錛渓istener錛?/span>
錛渓istener-class錛瀋om.test.ContextListener錛?listener-class錛?/span>
錛?listener錛?nbsp;
褰撶劧錛屼笂闈㈢殑com.test寰楁崲鎴愭偍鑷繁鐨勫寘鍚嶄簡銆備繚瀛榳eb.xml鏂囦歡鍚庯紝鎶婂伐紼嬫墦鍖呴儴緗插埌Tomcat涓嵆鍙備換鍔′細鍦ㄦ瘡鏅?2鐐硅嚦鍑屾櫒1鐐逛箣闂磋鎵ц錛屼笂闈㈢殑浠g爜浼氬湪Tomcat鐨勬棩蹇楁枃浠朵腑璁板綍濡備笅錛?/span>
2003-12-05 0錛?1錛?9 寮濮嬫墽琛屾寚瀹氫換鍔?/span>
2003-12-05 0錛?1錛?9 宸插畬鎴愪換鍔$殑1/10
……
2003-12-05 0錛?1錛?9 宸插畬鎴愪換鍔$殑10/10
2003-12-05 0錛?1錛?9 鎸囧畾浠誨姟鎵ц緇撴潫