先讲一讲Date中parse和format的用法:
看例子:
public static void main(String[] args) {
DateFormat dfat=new SimpleDateFormat("yyyyMMdd");
try {
Date date=dfat.parse(new Date().toString());
System.out.println(date.toString());
}catch (Exception e){
System.out.println(e);
}
}
运行时报错:java.text.ParseException: Unparseable date: "Thu Nov 24 19:57:14 CST 2016"
报错原因:在使用parse时,参数的字符串必须与DateFormat dfat=new SimpleDateFormat("yyyyMMdd")中定义的一致才行
一般在进行时间格式转换时,选择用parse时,与formate联合使用,修改为:
public static void main(String[] args) {
DateFormat dfat=new SimpleDateFormat("yyyyMMdd");
try {
// Date date=dfat.parse(new Date().toString());
// System.out.println(date.toString());
String dateStr =dfat.format(new Date());
Date date = dfat.parse(dateStr);
System.out.println(date.toString());
}catch (Exception e){
System.out.println(e);
}
}
也可以直接用format:
public static void main(String args[]){
SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd hh-mm-ss");
String date = f.format(new Date());
System.out.println(date);
}
再讲一讲Date中求间隔日期的代码实现
如:2016年11月1号是星期二,求2016年11月24日是星期几?
public static void main(String[] args){
String datestr1 = "20161101";
String datestr2 = "20161124";
int dateweek1 = 2;
//设置时间格式
DateFormat dFormat = new SimpleDateFormat("yyyyMMdd");
//将输入的两个日期字符串转换成时间格式java.util.Date
Date date1 = null,date2 = null;
try{
date1 = dFormat.parse(datestr1);
}catch (ParseException e){
e.printStackTrace();
}
try{
date2 = dFormat.parse(datestr2);
}catch (ParseException e){
e.printStackTrace();
}
//获取两个时间的毫秒时间
Long datelong1 = date1.getTime();
Long datelong2 = date2.getTime();
//第二个日期可能在第一个日期之前,做个判断
if(datelong1 > datelong2){
//第二个日期在第一个日期之前
//计算二者相差天数,由天数计算星期几
Long day = (datelong1 - datelong2)/(1000 * 60 * 60 * 24);
int dateweek2 = (int)(dateweek1 - day % 7 + 7)%7;
//0即星期日
if (dateweek2==0) {
dateweek2 = 7;
System.out.println(datestr2 + "是星期" + dateweek2);
}
}else{
//第二个日期在第一个日期之后
//计算二者相差天数,由天数计算星期几
Long day = (datelong2 - datelong1)/(1000 * 60 * 60 * 24);
int dateweek2 = (int)((day + dateweek1) % 7);
//0即星期日
if (dateweek2==0) {
dateweek2 = 7;
}
System.out.println(datestr2 + "是星期" + dateweek2);
}
}
上面举了两个例子,这也是关于Date比较常用的,下面再介绍一些关于Date的另外一些用法:
- 获取当前系统时间,返回一个长整数:
Date date = new Date(); System.out.println(date.getTime());
- 日期数据的定制形式,如生成时间:星期四-11月-24日-2016年,代码如下
结果:星期四-十一月-24-2016public static void main(String args[]){ SimpleDateFormat bartDateFormat = new SimpleDateFormat("EEEE-MMMM-dd-yyyy"); Date date = new Date(); System.out.println(bartDateFormat.format(date)); }
- 将文本数据解析成日期对象
public static void main(String args[]){ SimpleDateFormat bartDateFormat = new SimpleDateFormat("MM-dd-yyyy"); String dateStringToParse = "11-24-2016"; try { Date date = bartDateFormat.parse(dateStringToParse); System.out.println(date); System.out.println(date.getTime()); } catch (Exception ex) { System.out.println(ex.getMessage()); } }
- 使用标准的日期格式化过程
public static void main(String args[]){
Date date = new Date();
DateFormat shortDateFormat = DateFormat.getDateTimeInstance(DateFormat.SHORT,DateFormat.SHORT);
DateFormat mediumDateFormat = DateFormat.getDateTimeInstance(DateFormat.MEDIUM,DateFormat.MEDIUM);
DateFormat longDateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG,DateFormat.LONG);
DateFormat fullDateFormat = DateFormat.getDateTimeInstance(DateFormat.FULL,DateFormat.FULL);
System.out.println(shortDateFormat.format(date));
System.out.println(mediumDateFormat.format(date));
System.out.println(longDateFormat.format(date));
System.out.println(fullDateFormat.format(date));
}
生成的结果按顺序依次是: