java使用值字符串创建日期对象

我用它来获取当前时间:

java.util.Calendar cal = java.util.Calendar.getInstance(); System.out.println(new java.text.SimpleDateFormat("EEEE, dd/MM/yyyy/hh:mm:ss") .format(cal.getTime())); 

我想把值(我打印它)放入日期对象,我试过这个:

 Date currentDate = new Date(value); 

但是eclipse告诉我这个function并不好。

编辑 value是我使用system.out.println打印给您的值

每当您想将String转换为Date对象时,请使用SimpleDateFormat#parse
尝试使用

 String dateInString = new java.text.SimpleDateFormat("EEEE, dd/MM/yyyy/hh:mm:ss") .format(cal.getTime()) SimpleDateFormat formatter = new SimpleDateFormat("EEEE, dd/MM/yyyy/hh:mm:ss"); Date parsedDate = formatter.parse(dateInString); 

。另外一件事是,如果你想将Date转换为String那么你应该使用SimpleDateFormat#format函数。
现在Point for you是new Date(String)已被弃用,现在不推荐。现在每当有人想要解析时,他/她应该使用SimpleDateFormat#parse #parse。

有关SimpleDateFormat选项中使用的更多日期和时间模式,请参阅官方文档 。

使用SimpleDateFormat解析方法:

 import java.text.DateFormat; import java.text.SimpleDateFormat; String inputString = "11-11-2012"; DateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy"); Date inputDate = dateFormat.parse(inputString, dateFormat ); 

由于我们使用带有LocalDate的Java 8,我建议使用next:

 import java.time.LocalDate; import java.time.format.DateTimeFormatter; String inputString = "11-11-2012"; DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy"); LocalDate inputDate = LocalDate.parse(inputString); 

所有人都知道为什么ECLIPSE这样做的原因。

Date只有一个构造函数Date(长日期) ,它要求长数据类型中的日期。

您正在使用的构造函数

Date(String s)已过时。 从JDK 1.1版开始,由DateFormat.parse(String s)取代。

这就是为什么eclipse说这个function不好的原因。

请参阅此官方文档

http://docs.oracle.com/javase/6/docs/api/java/util/Date.html


您的上下文中不推荐使用的方法 – 来源 – http://www.coderanch.com/t/378728/java/java/Deprecated-methods

方法或类可能会被弃用的原因有很多。 在不破坏向后兼容性的情况下,API可能不容易扩展,因此被更强大的API取代(例如,java.util.Date已被弃用而不支持Calendar或Java 1.0事件模型)。 在某些情况下,它也可能根本不起作用或产生不正确的结果(例如,某些java.io流类在某些编码时无法正常工作)。 有时API只是构思错误(servlet API中的SingleThreadModel),并且什么都没有替换。 一些早期的调用已被“Java Bean”兼容的方法所取代(getSize的大小,getBounds等的边界)


SEVRAL解决方案只是GOOGLE IT–

您可以使用日期(长日期)通过将日期字符串转换为长毫秒,stackoverflow有这么多post用于此目的。

在java中将日期字符串转换为毫秒

  import java.util.Date; import java.text.SimpleDateFormat; 

以上是导入方法,下面是Date的简单代码

  SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); Date date = new Date(); system.out.println((dateFormat.format(date))); 

试试这个 :-

 try{ String valuee="25/04/2013"; Date currentDate =new SimpleDateFormat("dd/MM/yyyy").parse(valuee); System.out.println("Date is ::"+currentDate); }catch(Exception e){ System.out.println("Error::"+e); e.printStackTrace(); } 

输出: –

  Date is ::Thu Apr 25 00:00:00 GMT+05:30 2013 

您的价值应该是正确的格式。

在你的问题中你也要求如下: –

  Date currentDate = new Date(value); 

这种样式的日期构造函数已经被弃用。所以,它不再使用。我们知道Date有6个构造函数。 阅读更多

以下是使用SimpleDateFormat parse()方法执行此操作的优化解决方案。

 SimpleDateFormat formatter = new SimpleDateFormat( "EEEE, dd/MM/yyyy/hh:mm:ss"); String strDate = formatter.format(new Date()); try { Date pDate = formatter.parse(strDate); } catch (ParseException e) { // note: parse method can throw ParseException e.printStackTrace(); } 

很少有事情需要注意

  • 我们不需要创建Calendar实例来获取当前日期和时间而是使用new Date()
  • 此外,它不需要2SimpleDateFormat 实例 ,如此问题的最多投票答案中所示。 这只是浪费记忆
  • 此外,当我们知道parse方法只有机会抛出ParseException时,捕获像Exception这样的genericsException是一种不好的做法。 在处理exception时,我们需要尽可能具体 。 你可以参考, 抛出exception不好的做法?

这是因为值来了String( 不推荐使用获取字符串的Java Date对象构造函数 )

Date(String)已弃用。

看一下jodatime,或者你可以在调用Date(String)构造函数的方法之外放置@SuppressWarnings({“deprecation”})。

你基本上要做的是: –

 Calendar cal = Calendar.getInstance(); Date date = cal.getTime(); 

原因是,您要打印的String只是所需格式的DateString表示forms。 如果您尝试将其转换为日期,您最终将完成我上面提到的操作。

Datecal.getTime() )格式化为String并尝试从中获取Date – 没有任何意义。 Date没有这样的格式。 您只能使用SDF获得该String表示forms。