Java 可以将日期转换为long,但long太大?
我现在很困惑 我有一个Java 可以将日期转换为long,但long太大?,java,eclipse,Java,Eclipse,我现在很困惑 我有一个GregoriaCalendar对象,我给它指定了一个具体日期(2010年1月1日) 日历: Calendar c = new GregorianCalendar(); c.set(2010, 0, 1); System.out.println(c.getTime()); System.out.println(c.getTimeInMillis()); long timeStamp = 1262347977927; // ERROR: The literal 126234
GregoriaCalendar
对象,我给它指定了一个具体日期(2010年1月1日)
日历:
Calendar c = new GregorianCalendar();
c.set(2010, 0, 1);
System.out.println(c.getTime());
System.out.println(c.getTimeInMillis());
long timeStamp = 1262347977927;
// ERROR: The literal 1262347977927 of type int is out of range
long timeStamp = c.getTimeInMillis();
System.out.println(timeStamp);
输出:
Calendar c = new GregorianCalendar();
c.set(2010, 0, 1);
System.out.println(c.getTime());
System.out.println(c.getTimeInMillis());
long timeStamp = 1262347977927;
// ERROR: The literal 1262347977927 of type int is out of range
long timeStamp = c.getTimeInMillis();
System.out.println(timeStamp);
英国东部时间2010年1月1日星期五13:12:57
126234797927
现在,当我尝试创建一个long
并将这个数字存储在其中时,这个数字对于我的变量来说实际上太大了
存储在变量中:
Calendar c = new GregorianCalendar();
c.set(2010, 0, 1);
System.out.println(c.getTime());
System.out.println(c.getTimeInMillis());
long timeStamp = 1262347977927;
// ERROR: The literal 1262347977927 of type int is out of range
long timeStamp = c.getTimeInMillis();
System.out.println(timeStamp);
但是,当我将结果直接存储到变量中时,它工作得很好
直接存储:
Calendar c = new GregorianCalendar();
c.set(2010, 0, 1);
System.out.println(c.getTime());
System.out.println(c.getTimeInMillis());
long timeStamp = 1262347977927;
// ERROR: The literal 1262347977927 of type int is out of range
long timeStamp = c.getTimeInMillis();
System.out.println(timeStamp);
输出:
Calendar c = new GregorianCalendar();
c.set(2010, 0, 1);
System.out.println(c.getTime());
System.out.println(c.getTimeInMillis());
long timeStamp = 1262347977927;
// ERROR: The literal 1262347977927 of type int is out of range
long timeStamp = c.getTimeInMillis();
System.out.println(timeStamp);
1262348451631
为什么我长得太大而不能长,而不是太长而不能长?我很困惑
如果有人想知道的话,我正在使用Java6和EclipseIndigo
编辑:感谢您提供的所有即时答案。。。我现在觉得自己很愚蠢:p你只需在文字后面加一个L:
long timeStamp = 1262347977927L;
否
126234797927
对于一个长数字(即8字节)来说不够大
这样做:
long timeStamp = 1262347977927L;
长时间的声明
原因是,在Java中,默认情况下,所有数字都被视为int类型,除非您在最后放置了L
之类的开关
或者很简单:
long timeStamp = c.getTimeInMillis()
您必须附加
L
或L
long timeStamp = 1262347977927L;
将文本设置为指定的值,否则编译器将假定为整数值
前者更可取,因为后者看起来像1
变化
long timeStamp = 1262347977927;
到
请注意,您需要在末尾加上后缀“L”(首选)或“L”(加上后缀可能会导致代码难以阅读;有一个与此相关的条目)。使用数字末尾的L:
long timeStamp = 1262347977927L;
它将数字定义为Long。它并不是告诉您126234797927不能放入Long变量,而是告诉您在它尝试将其赋值到Long变量之前,它不能构造一个值为126234797927的int常量。请注意,错误中从未提及时间戳: int类型的文字126234797927超出范围 在数字后使用L将其标记为长常量,然后可以毫无问题地分配它:
long timeStamp = 1262347977927L;
在将数字分配给长变量时,请尝试在数字后附加“L”。请始终参考文档: 如果整数文本以字母L或L结尾,则其类型为long; 否则它的类型为int。建议您使用鞋面 大小写字母L,因为小写字母L很难区分 从数字1
别傻了!扪心自问,为什么这些答案像是从一把微型手枪中射出的:每个程序员都必须在时间到来之前面对这个问题:D