从java中的int值获取Date对象

时间:2012-02-27 16:56:49

标签: java

我有一个int值,并且int值我希望获得该Date值的int个对象。

示例:

 int value = 166368;
 long l = (long)value;
 Date date = new Date(l);

值是我的整数值,我想要Date这个特定值的对象。

现在,我想获取此Date值的int。我尝试将此int值转换为long,然后在long对象中设置Date值,但不会返回正确的值。

那么如何实现这个目标呢?

4 个答案:

答案 0 :(得分:2)

传递给Date构造函数的值必须是自1970年1月1日00:00:00.000 GMT以来经过的毫秒数。

您的代码是正确的,但是您在这里传递的值似乎太小而不正确。

答案 1 :(得分:1)

如果您传递的长值是自纪元(1970年1月1日)以来的毫秒数,则166368毫秒= 166.3秒< 3分钟,我会说你应该将1970年1月1日作为日期值。正确的吗?

答案 2 :(得分:0)

正如@ggreiner指出的那样,你应该告诉我们,你期望从int值166368得到哪个日期?

您的问题“从java中的int值获取Date对象”是可能的:

final int x = Integer.MAX_VALUE;
final Date d = new Date(x);
final Date today = new Date();
System.out.println("max integer x:" + x);
System.out.println("the Max date could be represented by x:" + d);
System.out.println("today in number:" + today.getTime());

运行上面的代码,你得到了:

max integer x:2147483647 
the Max date could be represented by x:Sun Jan 25 21:31:23 CET 1970 
today in number:1330362276028

这意味着,如果将整数传递给Date()构造函数,它可以工作,但是你不会在Sun Jan 25 21:31:23 CET 1970之后得到Date。

答案 3 :(得分:0)

如果您查看API public Date(long date)执行此操作

  

分配Date对象并初始化它以表示指定的对象   自标准基准时间以来称为“。”的毫秒数   时代“,即1970年1月1日,格林尼治标准时间00:00:00。

166368不到3分钟,所以日期不会改变。如果你打印,你会发现只有时间差异。

可能是你在尝试做这样的事情

Date now = new Date();
long nowLong = now.getTime();
long newLong = nowLong + 166368;
System.out.println(new Date(newLong).toString());

使用日期的简洁方法是使用DateFormat类。

DateFormat df = new SimpleDateFormat(“dd / MM / yy”); String formattedDate = df.format(new Date());

有一篇详细的文章here