我有一个变种:
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-xx
而Time
显然不是xx:xx:xx
。
答案 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
文字,连字符被解释为减法运算符。
以下是表示这些价值观的方法:
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