我有一个int
值,并且int
值我希望获得该Date
值的int
个对象。
示例:
int value = 166368;
long l = (long)value;
Date date = new Date(l);
值是我的整数值,我想要Date
这个特定值的对象。
现在,我想获取此Date
值的int
。我尝试将此int
值转换为long
,然后在long
对象中设置Date
值,但不会返回正确的值。
那么如何实现这个目标呢?
答案 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