1-日期转字符串
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" );//创建一个格式化对象sdf
Date d= new Date();
String str = sdf.format(d);//通过sdf地方法format格式化参数d(当前时间),保存在str中
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);
}
}
2-字符串转日期
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" );//创建一个格式化对象sdf
String str = "2016/1/5 12:12:12";
try {
Date d = sdf.parse(str);//通过方法parse,str字符串为参数转化为d
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();
}//这样理解,try里面时符合条件的,catch里面时不符合条件出现的异常给出的异常提示!
}
}
这里给出一道例题,随机日期时间,根据时间排序,不管日期年份
package date;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class TestDate {
@SuppressWarnings("deprecation")
public String randomDate(int start, int end) {
Date dStart = new ((start - 1900), 0, 1, 0, 0, 0);Date
Date dEnd = new ((end - 1900), 0, 1, 0, 0, 0);Date
long s = dEnd.getTime() - dStart.getTime();
long ra = (long) (Math.random() * s) + 1;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
Date dRandom = new Date(dStart.getTime() + ra);//这里得到一个随机日期字符串
String dateStr = sdf.format(dRandom);//通过格式转换成格式化字符串
return dateStr;
}
public static void main(String[] args) {
TestDate sdft = new TestDate();
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
/**
* 准备一个长度是9的日期数组 使用1970年-2000年之间的随机日期初始化该数组 按照这些日期的时间进行升序排序 比如 1988-1-21
* 12:33:22 就会排在 1978-4-21 19:07:23 前面,因为它的时间更小,虽然日期更大
*/
String[] dArr = new String[9];
for (int i = 0; i < dArr.length; i++) {
dArr[i] = sdft.randomDate(1970, 2000);
System.out.println("排序前:" + dArr[i]);
}
/**
* 冒泡排序
* 比较 时间先后 不管日期大小
*/
for (int i = 0; i < dArr.length; i++) {
for (int j = 0; j < dArr.length - i - 1; j++) {
String nStr = "1970-01-01 " + dArr[j].split(" ")[1];//巧妙抓住分隔符空格,加同一个日子转换成date转化标准格式
String nStr2 = "1970-01-01 " + dArr[j + 1].split(" ")[1];
try {
if(sdf2.parse(nStr).getTime() > sdf2.parse(nStr2).getTime()){//通过parse变成date类型再gettime比较大小
String temp = dArr[j];
dArr[j] = dArr[j + 1];
dArr[j + 1] = temp;
}
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
for (int i = 0; i < dArr.length; i++) {
System.out.println("排序后:" + dArr[i]);
}
}
}
SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS" );//创建一个格式化对象sdf
Date d= new Date();
String str = sdf.format(d);//通过sdf地方法format格式化参数d(当前时间),保存在str中
总的来说,sdf通过format格式化date类存放到字符串str中
而Date d = sdf.parse(str);//通过方法parse,str字符串为参数转化为d
sdf通过parse将str已经格式化好的字符串转化为date对象
另外,gettime时date的专利,目前来说