我用它来获取当前时间:
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告诉我这个功能并不好。
修改
value
是我使用system.out.println
答案 0 :(得分:55)
每当您想将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
函数。
现在点你的是
new Date(String)
已被弃用,现在不推荐。现在每当有人想要解析时,他/她都应该使用SimpleDateFormat#parse
。
请参阅official doc以获取SimpleDateFormat选项中使用的更多日期和时间模式。
答案 1 :(得分:30)
使用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);
答案 2 :(得分:4)
所有人都知道为什么ECLIPSE会这样做。
日期只有一个构造函数日期(长日期),它要求长数据类型中的日期。
您正在使用的构造函数
日期(字符串s) 已过时。从JDK 1.1版开始,由DateFormat.parse(String s)替换。
这就是为什么eclipse说这个功能不好。
查看此官方文档
<强> 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有这么多帖子用于此目的。
答案 3 :(得分:3)
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)));
答案 4 :(得分:1)
试试这个: -
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个构造函数。Read more
答案 5 :(得分:1)
以下是使用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();
}
几乎没有注意到的事情
new Date()
SimpleDateFormat
的2个实例
在这个问题的最多投票答案中找到。它只是一个
浪费记忆 Exception
方法只有机会抛出parse
时,捕获像ParseException
这样的通用异常是一种不好的做法。在处理异常时,我们需要尽可能具体。您可以参考throws Exception bad practice? 答案 6 :(得分:0)
这是因为值来了String(Java Date object constructor for getting string is deprecated)
和Date(String)
已被弃用。
查看jodatime或者您可以将@SuppressWarnings({“deprecation”})放在调用Date(String)
构造函数的方法之外。
答案 7 :(得分:0)
你基本上要做的是: -
Calendar cal = Calendar.getInstance();
Date date = cal.getTime();
原因是,您正在打印的String
只是String
所需格式的Date
。如果你试图把它转换成日期,你最终会做我上面提到的。
将Date
( cal.getTime())格式化为String
并尝试从中取回Date
毫无意义。 Date
没有这样的格式。您只能使用SDF获得String
表示。
答案 8 :(得分:0)
尝试一下,它对我有用。
String inputString = "01-01-1900";
Date inputDate= null;
try {
inputDate = new SimpleDateFormat("dd-MM-yyyy").parse(inputString);
} catch (ParseException e) {
e.printStackTrace();
}
dp.getDatePicker().setMinDate(inputDate.getTime());