26

我正在使用它来获取当前时间:

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 打印给您的值

4

9 回答 9

59

每当您想将字符串转换为日期对象时,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);

.Additional 事情是,如果你想将 a 转换为DateString那么你应该使用SimpleDateFormat#format函数。
现在,不推荐使用 Point for you,现在 new Date(String)不推荐使用。现在,每当有人想要解析时,他/她都应该使用SimpleDateFormat#parse.

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

于 2013-04-25T06:49:36.107 回答
35

使用 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,我建议使用下一个:

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,formatter);
于 2013-04-25T06:50:31.057 回答
3

首先要知道 ECLIPSE 这样做的原因。

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

您正在使用的构造函数

日期(字符串 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 的边界等)取代。


有几个解决方案只是 GOOGLE IT--

您可以通过将日期字符串转换为长毫秒来使用日期(长日期),并且stackoverflow为此目的有很多帖子。

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

于 2013-04-25T06:50:55.360 回答
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))); 
于 2013-04-25T06:51:57.660 回答
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 个构造函数。阅读更多

于 2013-04-25T07:06:41.533 回答
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 不好的做法?
于 2015-11-04T07:47:59.597 回答
0

这是因为值来 String (用于获取字符串的 Java Date 对象构造函数已被弃用

并且Date(String)已弃用。

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

于 2013-04-25T06:48:40.643 回答
0

你基本上想要做的是: -

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

原因是,String您正在打印的只是您所需格式的String表示Date。如果您尝试将其转换为日期,您最终会做我上面提到的事情。

Date将(cal.getTime() )格式化为 aString并试图从中取回 a Date- 没有任何意义。Date没有这样的格式。您只能String使用 SDF 获得它的表示。

于 2013-04-25T06:51:16.387 回答
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());
于 2020-01-14T07:39:29.163 回答