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

时间:2013-04-25 06:45:42

标签: java date

我用它来获取当前时间:

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

打印给您的值

9 个答案:

答案 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有这么多帖子用于此目的。

<强> converting a date string into milliseconds in java

答案 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();
}

几乎没有注意到的事情

  • 我们不需要创建Calendar实例来获取当前日期 &安培;时间改为使用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());