java字符串转换成指定格式的日期,在线等

时间:2021-07-15 03:58:10

try {
Date d2= new SimpleDateFormat("yyyy-MM-DD").parse("2010-5-22 18:48:00");
Date d3 =new SimpleDateFormat("yyyy-MM-DD").parse("2007-8-11 ");   
System.out.println(d3);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}   

如上面的代码,我想应该输出的是:2010-5-22才对吧,可输出的结果却是下面这样:
Fri Jan 22 00:00:00 CST 2010
Thu Jan 11 00:00:00 CST 2007
为什么不是:2010-5-22  2007-8-11呢?该怎么弄成这样啊?

7 个解决方案

#1


d3 是个Date对象。 System.out.println(d3); 其实就是 System.out.println(d3.toString())


System.out.println(new SimpleDateFormat("yyyy-MM-dd").format(d3));

#2


因为你最后输出的是时间而不是时间类型的字符串
DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date d2= format.parse("2010-5-22 18:48:00");
Date d3 =format.parse("2007-8-11");  
String sd2 = format.format(d2);
String sd3 = format.format(d3);

 System.out.println(sd2);
 System.out.println(sd3);

#3


你打印Date对象,会默认调用toString()方法。
而Date对象的toString()方法就是打印这种格式: dow mon dd hh:mm:ss zzz yyyy

明白?

#4


SimpleDateFormat sdf = new SimpleDateFormat(pattern);
System.out.println(sdf.format(new Date()));
结果
2010-03-17

你是要把字符串转化成Date
public static long getTimes(String timeStr) {
long result = 0L;

if (timeStr.matches("^\\d{4}/\\d{1,2}/\\d{1,2}$")) {
try {
Date date = sdf.parse(timeStr);
result = date.getTime();
} catch (ParseException e) {
e.printStackTrace();
}
}

return result;
}

上面这个方法可以转化成long,然后你可以转化成date.
看样子你像要的是第一种方法。

#5


啊,果然是这样,呵,谢谢!不过怎么让两个日期比较大小呢?或者比较相等呢?java有没有写好的方法?因为我想在一堆日期里面找出最新的日期,或者是找出日期在什么之间的数据记录!!!

#6


问题解决了,


//比较两个日期的大小,判断dat1是否大于dat2
public static boolean dateCompare(Date dat1, Date dat2) {
  boolean dateComPareFlag = true;
  if (dat2.compareTo(dat1) != 1) {
   dateComPareFlag = false; // 
  }
  return dateComPareFlag;
 }


谢谢各位大侠们啦,哈!

#7


public class StringDate {
public static void main(String args[]){
String input="2011-7-22";
SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd");
try {
Date t=format.parse(input);
System.out.println(t);
// String tt=format.format(t);
// System.out.println(tt);
// System.out.println(new SimpleDateFormat("yyyy-MM-dd").format(t));
System.out.println(format.format(t));
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

#1


d3 是个Date对象。 System.out.println(d3); 其实就是 System.out.println(d3.toString())


System.out.println(new SimpleDateFormat("yyyy-MM-dd").format(d3));

#2


因为你最后输出的是时间而不是时间类型的字符串
DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date d2= format.parse("2010-5-22 18:48:00");
Date d3 =format.parse("2007-8-11");  
String sd2 = format.format(d2);
String sd3 = format.format(d3);

 System.out.println(sd2);
 System.out.println(sd3);

#3


你打印Date对象,会默认调用toString()方法。
而Date对象的toString()方法就是打印这种格式: dow mon dd hh:mm:ss zzz yyyy

明白?

#4


SimpleDateFormat sdf = new SimpleDateFormat(pattern);
System.out.println(sdf.format(new Date()));
结果
2010-03-17

你是要把字符串转化成Date
public static long getTimes(String timeStr) {
long result = 0L;

if (timeStr.matches("^\\d{4}/\\d{1,2}/\\d{1,2}$")) {
try {
Date date = sdf.parse(timeStr);
result = date.getTime();
} catch (ParseException e) {
e.printStackTrace();
}
}

return result;
}

上面这个方法可以转化成long,然后你可以转化成date.
看样子你像要的是第一种方法。

#5


啊,果然是这样,呵,谢谢!不过怎么让两个日期比较大小呢?或者比较相等呢?java有没有写好的方法?因为我想在一堆日期里面找出最新的日期,或者是找出日期在什么之间的数据记录!!!

#6


问题解决了,


//比较两个日期的大小,判断dat1是否大于dat2
public static boolean dateCompare(Date dat1, Date dat2) {
  boolean dateComPareFlag = true;
  if (dat2.compareTo(dat1) != 1) {
   dateComPareFlag = false; // 
  }
  return dateComPareFlag;
 }


谢谢各位大侠们啦,哈!

#7


public class StringDate {
public static void main(String args[]){
String input="2011-7-22";
SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd");
try {
Date t=format.parse(input);
System.out.println(t);
// String tt=format.format(t);
// System.out.println(tt);
// System.out.println(new SimpleDateFormat("yyyy-MM-dd").format(t));
System.out.println(format.format(t));
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}