Date 类
Date类可以在java.util包中找到,用一个long类型的值表示一个指定的时刻。它的一个有用的构造函数是Date(),它创建一个
表示创建时刻的对象。getTime()方法返回Date对象的long值。在下面的程序中,我使用Date()构造函数创建一个表示程序运
行时刻的对象,并且利用 getTime()方法找到这个日期代表的毫秒数量:
代码:
import java.util.*; public class Now { public static void main(String[] args) { Date now = new Date(); long nowLong = now.getTime(); System.out.println("Value is " + nowLong); } }
DateFormat df = DateFormat.getDateInstance();
import java.util.*; import java.text.*; public class NowString { public static void main(String[] args) { Date now = new Date(); DateFormat df = DateFormat.getDateInstance(); String s = df.format(now); System.out.println("Today is " + s); } }
import java.util.*; import java.text.*; public class StyleDemo { public static void main(String[] args) { Date now = new Date(); DateFormat df = DateFormat.getDateInstance(); DateFormat df1 = DateFormat.getDateInstance(DateFormat.SHORT); DateFormat df2 = DateFormat.getDateInstance(DateFormat.MEDIUM); DateFormat df3 = DateFormat.getDateInstance(DateFormat.LONG); DateFormat df4 = DateFormat.getDateInstance(DateFormat.FULL); String s = df.format(now); String s1 = df1.format(now); String s2 = df2.format(now); String s3 = df3.format(now); String s4 = df4.format(now); System.out.println("(Default) Today is " + s); System.out.println("(SHORT) Today is " + s1); System.out.println("(MEDIUM) Today is " + s2); System.out.println("(LONG) Today is " + s3); System.out.println("(FULL) Today is " + s4); } }
import java.util.*; import java.text.*; public class ParseExample { public static void main(String[] args) { String ds = "November 1, 2000"; DateFormat df = DateFormat.getDateInstance(); try { Date d = df.parse(ds); } catch(ParseException e) { System.out.println("Unable to parse " + ds); } } }
GregorianCalendar(int year, int month, int date)
GregorianCalendar firstFlight = new GregorianCalendar(1903, Calendar.DECEMBER, 17);
GregorianCalendar firstFlight = new GregorianCalendar(1903, 11, 17);
import java.util.*; import java.text.*; public class Flight { public static void main(String[] args) { GregorianCalendar firstFlight = new GregorianCalendar(1903, Calendar.DECEMBER, 17); Date d = firstFlight.getTime(); DateFormat df = DateFormat.getDateInstance(); String s = df.format(d); System.out.println("First flight was " + s); } }
GregorianCalendar thisday = new GregorianCalendar();
import java.util.*; import java.text.*; class Today { public static void main(String[] args) { GregorianCalendar thisday = new GregorianCalendar(); Date d = thisday.getTime(); DateFormat df = DateFormat.getDateInstance(); String s = df.format(d); System.out.println("Today is " + s); } }
import java.util.*; import java.text.*; public class World { public static void main(String[] args) { GregorianCalendar worldTour = new GregorianCalendar(1872, Calendar.OCTOBER, 2);
worldTour.add(GregorianCalendar.DATE, 80); Date d = worldTour.getTime(); DateFormat df = DateFormat.getDateInstance(); String s = df.format(d); System.out.println("80 day trip will end " + s); } }
import java.util.*; import java.text.*; public class Mortgage { public static void main(String[] args) { GregorianCalendar mortgage = new GregorianCalendar(1997, Calendar.MAY, 18); mortgage.add(Calendar.YEAR, 15); Date d = mortgage.getTime(); DateFormat df = DateFormat.getDateInstance(); String s = df.format(d); System.out.println("15 year mortgage amortized on " + s); } }
最近做项目时用到一个例子:根据当天日期和有效期限计算出未来X天的日期
代码:
import java.util.*; import java.text.*; public class Future { public static void main(String[] args) {
Calendar rightNow = Calendar.getInstance();
rightNow.add(Calendar.DAY_OF_MONTH,10); //这个10原来是变量
Date d = rightNow.getTime();
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
String s = sdf.format(d); System.out.println("10 later's date is: " + s); } }
add()一个重要的副作用是它改变的原来的日期。有时候,拥有原始日期和修改后的日期很重要。 不幸的是,你不能简单的创
建一个 GregorianCalendar对象,设置它和原来的相等(equal)。 原因是两个变量指向同一个Date()对象地址。如果Date对
象改变,两个变量就指向改变后的日期对象。 代替这种做法,应该创建一个新对象。下面的程序示范了这种做法:
import java.util.*; import java.text.*; public class ThreeDates { public static void main(String[] args) { GregorianCalendar gc1 = new GregorianCalendar(2000, Calendar.JANUARY, 1); GregorianCalendar gc2 = gc1; GregorianCalendar gc3 = new GregorianCalendar(2000, Calendar.JANUARY, 1); //Three dates all equal to January 1, 2000 gc1.add(Calendar.YEAR, 1); file: //gc1 and gc2 are changed DateFormat df = DateFormat.getDateInstance(); Date d1 = gc1.getTime(); Date d2 = gc2.getTime(); Date d3 = gc3.getTime(); String s1 = df.format(d1); String s2 = df.format(d2); String s3 = df.format(d3); System.out.println("gc1 is " + s1); System.out.println("gc2 is " + s2); System.out.println("gc3 is " + s3); } }
import java.util.*; import java.text.*; public class ReviewDates { private GregorianCalendar firstDay, oneDay, oneWeek, oneMonth, oneQuarter, oneYear; final int dateArraySize = 6; ReviewDates(GregorianCalendar gcDate) { int year = gcDate.get(GregorianCalendar.YEAR); int month = gcDate.get(GregorianCalendar.MONTH); int date = gcDate.get(GregorianCalendar.DATE); firstDay = new GregorianCalendar(year, month, date); oneDay = new GregorianCalendar(year, month, date); oneWeek = new GregorianCalendar(year, month, date); oneMonth = new GregorianCalendar(year, month, date); oneQuarter = new GregorianCalendar(year, month, date); oneYear = new GregorianCalendar(year, month, date); oneDay.add(GregorianCalendar.DATE, 1); oneWeek.add(GregorianCalendar.DATE, 7); oneMonth.add(GregorianCalendar.MONTH, 1); oneQuarter.add(GregorianCalendar.MONTH, 3); oneYear.add(GregorianCalendar.YEAR, 1); } ReviewDates() { this(new GregorianCalendar()); } public void listDates() { DateFormat df = DateFormat.getDateInstance(DateFormat.LONG ); Date startDate = firstDay.getTime(); Date date1 = oneDay.getTime(); Date date2 = oneWeek.getTime(); Date date3 = oneMonth.getTime(); Date date4 = oneQuarter.getTime(); Date date5 = oneYear.getTime(); String ss = df.format(startDate); String ss1 = df.format(date1); String ss2 = df.format(date2); String ss3 = df.format(date3); String ss4 = df.format(date4); String ss5 = df.format(date5); System.out.println("Start date is " + ss); System.out.println("Following review dates are:"); System.out.println(ss1); System.out.println(ss2); System.out.println(ss3); System.out.println(ss4); System.out.println(ss5); System.out.println(); } public GregorianCalendar[] getDates() { GregorianCalendar[] memoryDates = new GregorianCalendar[dateArraySize]; memoryDates[0] = firstDay; memoryDates[1] = oneDay; memoryDates[2] = oneWeek; memoryDates[3] = oneMonth; memoryDates[4] = oneQuarter; memoryDates[5] = oneYear; return memoryDates; } public GregorianCalendar getFirstDay() { return this.firstDay; } public GregorianCalendar getOneDay() { return this.oneDay; } public GregorianCalendar getOneWeek() { return this.oneWeek; } public GregorianCalendar getOneMonth() { return this.oneMonth; } public GregorianCalendar getOneQuarter() { return this.oneQuarter; } public GregorianCalendar getOneYear() { return this.oneYear; } }
import java.util.*; public class ShowDates { public static void main(String[] args) { ReviewDates rd = new ReviewDates(); rd.listDates(); GregorianCalendar gc = new GregorianCalendar(2001, Calendar.JANUARY, 15); ReviewDates jan15 = new ReviewDates(gc); jan15.listDates(); } }