- 一、獲取服務器端當前日期: <%@ page import="java.util.Date"%> <% Date myDate = new Date(); %>
- 二、獲取當前年、月、日: <%@ page import="java.util.Date"%> <% Date myDate = new Date(); int thisYear = myDate.getYear() + 1900;//thisYear = 2003 int thisMonth = myDate.getMonth() + 1;//thisMonth = 5 int thisDate = myDate.getDate();//thisDate = 30 %>
- 三、按本地時區輸出當前日期 <%@ page import="java.util.Date"%> <% Date myDate = new Date(); out.println(myDate.toLocaleString()); %> 輸出結果爲: 2003-5-30
- 四、獲取數據庫中字段名爲"publish_time"、類型爲Datetime的值 <%@ page import="java.util.Date"%> <% ...鏈接數據庫... ResultSet rs = ... Date sDate = rs.getDate("publish_time"); %>
- 五、按照指定格式打印日期 <%@ page import="java.util.Date"%> <%@ page import="java.text.DateFormat"%> <% Date dNow = new Date(); SimpleDateFormat formatter = new SimpleDateFormat("E yyyy.MM.dd at hh:mm:ss a zzz"); out.println("It is " + formatter.format(dNow)); %> 輸出的結果爲: It is 星期五 2003.05.30 at 11:30:46 上午 CST (更爲詳盡的格式符號請參看SimpleDateFormat類)
- 六、將字符串轉換爲日期 <%@ page import="java.util.Date"%> <%@ page import="java.text.DateFormat"%> <% String input = "1222-11-11"; SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); Date t = null; try...{ t = formatter.parse(input); out.println(t); }catch(ParseException e)...{ out.println("unparseable using" + formatter); } %> 輸出結果爲: Fri Nov 11 00:00:00 CST 1222
- 七、日期的加減運算 方法:用Calendar類的add()方法 <%@ page import="java.util.*"%> <%@ page import="java.text.*"%> <% Calendar now = Calendar.getInstance(); SimpleDateFormat formatter = new SimpleDateFormat("E yyyy.MM.dd at hh:mm:ss a zzz"); out.println("It is now " + formatter.format(now.getTime())); now.add(Calendar.DAY_OF_YEAR,-(365*2)); out.println("<br>"); out.println("Two years ago was " + formatter.format(now.getTime())); %> 輸出結果爲: It is now 星期五 2003.05.30 at 01:45:32 下午 CST Two years ago was 星期三 2001.05.30 at 01:45:32 下午 CST
- 八、比較日期方法:用equals()、before()、after()方法 <%@ page import="java.util.*"%> <%@ page import="java.text.*"%> <% DateFormat df = new SimpleDateFormat("yyy-MM-dd"); Date d1 = df.parse("2000-01-01"); Date d2 = df.parse("1999-12-31"); String relation = null; if(d1.equals(d2)) relation = "the same date as"; else if(d1.before(d2)) relation = "before"; else relation = "after"; out.println(d1 +" is " + relation + + d2); %> 輸出結果爲: Sat Jan 01 00:00:00 CST 2000 is after Fri Dec 31 00:00:00 CST 1999
- 九、記錄一件事所花費的時間方法:調用兩次System.getTimeMillis()方法,求差值 <%@ page import="java.text.*"%> <% long t0,t1; t0 = System.currentTimeMillis(); out.println("Cyc starts at " + t0); int k = 0; for(int i =0;i<100000;i++) t1 = System.currentTimeMillis(); out.println("<br>"); out.println("Cyc ends at " + t1); out.println("<br>"); out.println("This run took " + (t1-t0) + "ms."); %> 輸出結果爲: Cyc starts at 1054275312432 Cyc ends at 1054275312442 This run took 10ms.
- 10:如何格式化小數 <%@ page import="java.text.*"%> <% DecimalFormat df = new DecimalFormat(",###.00"); double aNumber = 33665448856.6568975; String result = df.format(aNumber); out.println(result); %> 輸出結果爲: 33,665,448,856.66
- Java日期經常使用類:
- Java.util.TimeZone:
- 時區TimeZone類,即java.util.TimeZone類的實例包含了一個與格林威治標準時間(GMT)相比較得出的以微秒爲單位的時區偏移量,並且它還處理夏令時。要得到一個全部支持的進區的列表,你可使用方法TimeZone.getAvailableIDs,它將返回一個包含了全部進區ID的字符串數組。要知道關於TimeZone類的更多細節,能夠參看API文檔。
- Java.util.Calendar:
- Calender是一個抽象類,因此不能實例化,只能用它所提供的靜態方法
- Calendar c = Calendar.getInstance();
- System.out.println(c.getTime());
- 輸出以下:Tue May 29 12:57:36 CST 2007
- 有四種方式能夠獲得Calendar的實例對象
- (1)public static Calendar getInstance()//默認方式:以本地的時區和地區來構造Calendar,實際上調用的是(4)的方法。
- (2)public static Calendar getInstance(TimeZone zone)//以時區來構造Calendar
- (3)public static Calendar getInstance(Locale aLocale)//以地區構造Calendar
- (4)public static Calendar getInstance(TimeZone zone, Locale aLocale)//以地區構造Calendar
- 能夠用DateFormat類來對日期進行格式化的顯示,以下的代碼所示:
- System.out.println(DateFormat.getDateInstance().format(c.getTime()));
- 輸出爲2007-5-29;
- 因爲DateFormat也是一個抽象類,因此只能用getDateInstance()而後調用format(Date date)對日期進行格式化,
- 從這裏能夠看出format的參數是Date,如今的Date的做用其實就是進行一箇中轉,通常而言用Calendar對日期進行操做就足夠了,Date不建議使用,它的好多方法都不建議使用了。
- DateFomate的參數有好幾種格式:
- public static final int FULL = 0;
- public static final int LONG = 1;
- public static final int MEDIUM = 2;
- public static final int SHORT = 3;
- public static final int DEFAULT = MEDIUM;
- 默認輸出是MEDIUM,也就是上面的輸出2007-5-29。
- DateFormat df = DateFormat.getDateInstance(DateFormat.FULL);
- System.out.println(df.format(c.getTime()));
- 格式是FULL,輸出爲:2007年5月29日 星期二,固然了,默認是以本地的時區和地區輸出的
- Java.util. GregorianCalendar:
- 該類是Java.util.Calendar的子類,能夠化GregorianCalendar獲得某天的日期對象
- //某年某月的第一天
- GregorianCalendar firstDay=new GregorianCalendar(new Integer(year).intValue(),new Integer(month).intValue()-1,1);
- //該月下個月的第一天
- GregorianCalendar nextFirstDay=new GregorianCalendar(new Integer(year).intValue(),new Integer(month).intValue()-1,1);
- nextFirstDay.add(GregorianCalendar.MONTH, 1);
- //該月最後一天(沒必要管每個月多少天了)
- GregorianCalendar lastDay=new GregorianCalendar(new Integer(year).intValue(),new Integer(month).intValue()-1,1);
- lastDay.add(GregorianCalendar.MONTH, 1);
- lastDay.add(GregorianCalendar.DATE, -1);
- 示範以下:
- /以今天爲例
- GregorianCalendar today = new GregorianCalendar(2007,4,29);
- System.out.println(today.getTime());
- //下個月的今天
- today.add(today.MONTH, 1);
- System.out.println(today.getTime());
- //該月的最後一天
- GregorianCalendar gc = new GregorianCalendar(2007,4,1);
- gc.add(gc.MONDAY, -1);
- gc.add(GregorianCalendar.DATE, -1);
- System.out.println(gc.getTime());
- 輸出以下:
- Tue May 29 00:00:00 CST 2007
- Fri Jun 29 00:00:00 CST 2007
- Sat Mar 31 00:00:00 CST 2007
- java.util.Date和java.sql.Date的區別及應用
- java.util.Date 就是在除了SQL語句的狀況下面使用
- java.sql.Date 是針對SQL語句使用的,它只包含日期而沒有時間部分
- 它都有getTime方法返回毫秒數,天然就能夠直接構建
- java.util.Date d = new java.util.Date(sqlDate.getTime());
- ...
- --------------------------------------------------------------------------------
- java.util.Date 是 java.sql.Date 的父類(注意拼寫)
- 前者是經常使用的表示時間的類,咱們一般格式化或者獲得當前時間都是用他
- 後者以後在讀寫數據庫的時候用他,由於PreparedStament的setDate()的第2參數和ResultSet的getDate()方法的第2個參數都是java.sql.Date
- 轉換是
- java.sql.Date date=new Java.sql.Date();
- java.util.Date d=new java.util.Date (date.getTime());
- 反過來是同樣的
- --------------------------------------------------------------------------------
- 繼承關係:java.lang.Object --》 java.util.Date --》 java.sql.Date
- 具體的轉換關係就是java.util.Date d=new java.util.Date (new Java.sql.Date());
- --------------------------------------------------------------------------------
- sql.date,通常是在數據庫的時間字段,util.date通常是平常日期字段
- --------------------------------------------------------------------------------
- java.sql.Date主要是用於sql中的!
- 而java.util.Date用語通常的環境下都行!
- --------------------------------------------------------------------------------
- SimpleDateFormat f=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
- java.util.Date utilDate=new Date();
- java.sql.Date sqlDate=new java.sql.Date(utilDate.getTime());
- java.sql.Time sTime=new java.sql.Time(utilDate.getTime());
- java.sql.Timestamp stp=new java.sql.Timestamp(utilDate.getTime());
- System.out.println(utilDate.getYear());
- 這裏全部時間日期均可以被SimpleDateFormat格式化format()
- f.format(stp);f.format(sTime);f.format(sqlDate);f.format(utilDate)
- java.sql.Date sqlDate=java.sql.Date.valueOf("2005-12-12");
- utilDate=new java.util.Date(sqlDate.getTime());
- --------------------------------------------------------------------------------------------------
- 另類取得年月日的方法:
- import java.text.SimpleDateFormat;
- import java.util.*;
- java.util.Date date = new java.util.Date();
- //若是但願獲得YYYYMMDD的格式
- SimpleDateFormat sy1=new SimpleDateFormat("yyyyMMDD");
- String dateFormat=sy1.format(date);
- //若是但願分開獲得年,月,日
- SimpleDateFormat sy=new SimpleDateFormat("yyyy");
- SimpleDateFormat sm=new SimpleDateFormat("MM");
- SimpleDateFormat sd=new SimpleDateFormat("dd");
- String sysyear=sy.format(date);
- String smsmon=sm.format(date);
- String sdsday=sd.format(date);
- 爲何java.sql.Date類型的值插入到數據庫中Date字段中會發生數據截取呢?
- java.sql.Date是爲了配合SQL DATE而設置的數據類型。「規範化」的java.sql.Date只包含年月日信息,時分秒毫秒都會清零。格式相似:YYYY-MM-DD。當咱們調用 ResultSet的getDate()方法來得到返回值時,java程序會參照"規範"的java.sql.Date來格式化數據庫中的數值。所以,若是數據庫中存在的非規範化部分的信息將會被劫取。
- 同理。若是咱們把一個java.sql.Date值經過PrepareStatement的setDate方法存入數據庫時,java程序會對傳入的 java.sql.Date規範化,非規範化的部分將會被劫取。然而,咱們java.sql.Date通常由java.util.Date轉換過來,如:java.sql.Date sqlDate=new java.sql.Date(new java.util.Date().getTime()).
- 顯然,這樣轉換過來的java.sql.Date每每不是一個規範的java.sql.Date.要保存java.util.Date的精確值,咱們須要利用java.sql.Timestamp.
- 經常使用日期處理示例代碼:
- import java.sql.Timestamp;
- import java.text.ParseException;
- import java.text.SimpleDateFormat;
- import java.util.Calendar;
- import java.util.Date;
- public class TestDate {
- Calendar c=Calendar.getInstance();
- public static void main(String[] args){
- //取系統當前時間
- Calendar c=Calendar.getInstance();
- System.out.println(c.getTime());
- //取系統時間
- Date d=new Date();
- System.out.println(d);
- //將字符串型轉爲Timestamp型
- String s="2008-9-13 05:07:00";
- Timestamp ta=Timestamp.valueOf(s);
- System.out.println(ta);
- //日期格式化
- SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日");
- Timestamp ts=new Timestamp(System.currentTimeMillis());
- String str=sdf.format(ts);
- System.out.println(str);
- //將字符串轉換爲java.sql.Date
- String s1="2008-09-01";
- java.sql.Date d1=java.sql.Date.valueOf(s1);
- System.out.println(s1);
- //將字符串轉換爲java.util.Date
- String s2=sdf.format(new Date());
- Date d2=null;
- try {
- d2 = sdf.parse(s2);
- } catch (ParseException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- System.out.println(d2);
- //將java.sql.Date轉換爲java.util.Date
- java.sql.Date d3=new java.sql.Date(System.currentTimeMillis());
- Date d4=new Date(d3.getTime());
- System.out.println(d4);
- //將java.util.Date轉換爲java.sql.Date
- Date d5=new Date();
- java.sql.Date d6=new java.sql.Date(d5.getTime());
- System.out.println(d6);
- }
- }