Java类型:表示“Date”类型变量的格式是什么? `Time`?

时间:2014-04-02 20:27:54

标签: java

我有一个变种:

Date date;
Time time;

和方法:

MyDateMethod(Date date){
//do stuff
}

MyTimeMethod(Time time){
//do stuff
}

我尝试使用MyDateMethod()进行以下调用:

MyDateMethod(1995-03-7);

我收到一条错误消息,说我在预期类型int时提供了Time类型。

我还尝试使用MyTimeMethod()进行以下调用:

MyTimeMethod(03:04:55);

我收到错误Type mismatch: Cannot convert type int to boolean.

放入这些不同类型的变量的格式是什么? Date显然不是xxxx-xx-xxTime显然不是xx:xx:xx

5 个答案:

答案 0 :(得分:1)

有几个选项,

DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try {
    Date d = sdf.parse("1995-03-07");
    System.out.println(d);
} catch (ParseException e) {
    e.printStackTrace();
}

输出

    Tue Mar 07 00:00:00 EST 1995

或者,您可以使用

// -1 because January is 0... I didn't design it!
Calendar c = new GregorianCalendar(1995, 3 - 1, 7);
System.out.println(c.getTime());

与之前的输出相同。

答案 1 :(得分:0)

SimpleDateFormat就是您所需要的。需要按日期格式初始化。

像这样使用:

SimpleDateFormat dateFormat = new SimpleDateFormat(
                "yyyy/MM/dd HH:mm:ss", Locale.getDefault());

然后:

 Date date = (Date) dateFormat.parse("2014/04/02 22:22:22");

答案 2 :(得分:0)

请查看DateFormat,特别是SimpleDateFormat

您的示例将使用SimpleDateFormat

进行编码
Date date = new SimpleDateFormat("yyyy-MM-dd").parse("1995-03-07")

(我假设你在这里有几个月的时间,你需要交换MM和dd,如果没有)。

答案 3 :(得分:0)

Java不支持Date文字。您需要使用构造函数或静态工厂方法来获取此类的实例。

1995-03-07返回1985,因为此处有三个int文字,连字符被解释为减法运算符。

查看Date classDateFormat class

的文档

以下是表示这些价值观的方法:

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date date = dateFormat.parse("1995-03-07");

SimpleDateFormat timeFormat = new SimpleDateFormat("HH:mm:ss");
Date time = timeFormat.parse("03:46:16");

您可以使用相同的格式对象来执行此转换的反向操作。请注意,这些Date个实例代表一个特定的时刻,低至毫秒级。在内部,这表示为自1970年1月1日00:00:00 GMT以来的毫秒数

这个API几乎不是Java中最漂亮的API,通过查看文档,您可以看到它经历了多少变化。只需看看弃用方法的数量。

我建议改为查看Joda-Time library

或者,如果您可以选择使用Java 8,则可以尝试brand new API that comes with it

答案 4 :(得分:0)

answer by Tom是正确的。 没有日期时间文字 inJava。

正如他所说,旧的捆绑java.util.Date和.Calendar类是非常麻烦的。避免他们。在Java 8中使用Joda-Time库或新的java.time包。

约达时间

在Joda-Time:

  • 如果您只想要一个没有时区的日期,请使用LocalDate课程。
  • 同样,在忽略时区和日期时仅使用时间,请使用LocalTime类。
  • 但大多数情况下,您可能希望在一个对象中使用跟踪日期,时间和时区的DateTime类。

日期时间文本

DateTime对象包含文本。没有字符串。如果需要字符串表示,请使用formatter对象生成一个。搜索StackOverflow以获取许多示例。

Joda-Time内置格式化程序,用于明智且日益普及的ISO 8601标准。例如,DateTime类上的toString实现生成一个像这样的字符串......

2014-04-01T20:17:35-08:00