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()
- 此外,它不需要2个
SimpleDateFormat
实例 ,如此问题的最多投票答案中所示。 这只是浪费记忆 - 此外,当我们知道
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
只是所需格式的Date
的String
表示forms。 如果您尝试将其转换为日期,您最终将完成我上面提到的操作。
将Date
( cal.getTime() )格式化为String
并尝试从中获取Date
– 没有任何意义。 Date
没有这样的格式。 您只能使用SDF获得该String
表示forms。