Date类(是java.util.Date而不是java.sql.Date,后者是访问数据库的)
时间原点:1970年1月1日8点0分0秒
所有的日期,都是以这个0点为基准,每过一毫秒,就+1
Date d1 =new Date();//当前时间
getTime得到一个long型的整数
使用方法 : d1.getTime;
System.currenTimeMills()//当前日期的毫秒数
关键字 | 简介 | |
---|---|---|
format | 日期转字符串 |
|
parse | 字符串转日期 |
package date;
//
import java.text.SimpleDateFormat;
import java.util.Date;
public class TestDate {
public static void main(String[] args) {
//y 代表年
//M 代表月
//d 代表日
//H 代表24进制的小时
//h 代表12进制的小时
//m 代表分钟
//s 代表秒
//S 代表毫秒
SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS" );
Date d= new Date();
String str = sdf.format(d);
System.out.println("当前时间通过 yyyy-MM-dd HH:mm:ss SSS 格式化后的输出: "+str);
SimpleDateFormat sdf1 =new SimpleDateFormat("yyyy-MM-dd" );
Date d1= new Date();
String str1 = sdf1.format(d1);
System.out.println("当前时间通过 yyyy-MM-dd 格式化后的输出: "+str1);
}
}
字符串转日期
package date;
//
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class TestDate {
public static void main(String[] args) {
SimpleDateFormat sdf =new SimpleDateFormat("yyyy/MM/dd HH:mm:ss" );
String str = "2016/1/5 12:12:12";
try {
Date d = sdf.parse(str);
System.out.printf("字符串 %s 通过格式 yyyy/MM/dd HH:mm:ss %n转换为日期对象: %s",str,d.toString());
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
例题:日期格式化
准备一个长度是9的日期数组
使用1970年-2000年之间的随机日期初始化该数组
按照这些日期的时间进行升序排序
比如 1988-1-21 12:33:22 就会排在 1978-4-21 19:07:23 前面,因为它的时间更小,虽然日期更大
package time;
import java.util.*;
import java.text.*;
public class FormatDate {
public static void main(String[] args) {
int yearHome =1970;
int yearEnd = 2000;
Date str[] = new Date[8];
for(int i=0;i<str.length;i++) {
str[i]=randomdate(yearHome,yearEnd);
}
System.out.println("排序前");
for (int i = 0; i < str.length; i++) {
System.out.print(toString(str[i])+"\t");
if(2==i%3)
System.out.println();
}
System.out.println("排序后");
for(int i=0;i<str.length-1;i++) {
for(int j=i+1;j<str.length;j++) {
String strTimeI = toString(str[i],"HHmmss");
String strTimeJ = toString(str[i],"HHmmss");
int iTimeI = Integer.parseInt(strTimeI);
int iTimeJ = Integer.parseInt(strTimeJ);
if(iTimeJ<iTimeI)
{
Date t=str[i];
str[i]=str[j];
str[j]=t;
}
}
}
for (int i = 0; i < str.length; i++) {
System.out.print(toString(str[i])+"\t");
if(2==i%3)
System.out.println();
}
}
public static String toString(Date d) {
return toString(d,"yyyy-MM-dd HH:mm:ss");
}
public static String toString(Date d,String format) {
SimpleDateFormat sd = new SimpleDateFormat(format);
return sd.format(d);
}
public static Date randomdate(int yearHome,int yearEnd) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
try{
Date dHome = sdf.parse(String.valueOf(yearHome));
Date dEnd = sdf.parse(String.valueOf(yearEnd));
long timeHome =dHome.getTime();
long timeEnd =dEnd.getTime();
long timeRandom = (long)(timeEnd+Math.random()*(timeEnd-timeHome));
return new Date(timeRandom);
}catch(ParseException e) {
e.printStackTrace();
}
return null;
}
}
翻日历
package date;
import java.text.SimpleDateFormat;
//
import java.util.Calendar;
import java.util.Date;
public class TestDate {
private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
public static void main(String[] args) {
Calendar c = Calendar.getInstance();
Date now = c.getTime();
// 当前日期
System.out.println("当前日期:\t" + format(c.getTime()));
// 下个月的今天
c.setTime(now);
c.add(Calendar.MONTH, 1);
System.out.println("下个月的今天:\t" +format(c.getTime()));
// 去年的今天
c.setTime(now);
c.add(Calendar.YEAR, -1);
System.out.println("去年的今天:\t" +format(c.getTime()));
// 上个月的第三天
c.setTime(now);
c.add(Calendar.MONTH, -1);
c.set(Calendar.DATE, 3);
System.out.println("上个月的第三天:\t" +format(c.getTime()));
}
private static String format(Date time) {
return sdf.format(time);
}
}
完事儿!