我有一个变量获取当前时间并存储在long中。但我必须将其转换为 int ,因为这是要求。所以我正在做的是用(int)转换val并存储在int。
中Val = 1355399741522 (long)
Int Val = -1809346991 (after casting to int)
After Casting from int to long -> Val = -1809346991 //TESTED
现在我的问题是,如果我想再将这个int转换回来,那绝对不会对我起作用。 我已经测试过了。但我想要替代解决方案。
注意 - 我不想存储很长时间。作为其要求。我正在使用以下功能将长时间转换为
public static String convertToTime(final long date) {
String time = null;
final SimpleDateFormat bartDateFormat1 = new SimpleDateFormat("HH");
final SimpleDateFormat bartDateFormat2 = new SimpleDateFormat("mm");
final Date fomDat = new Date(date);
final int hour = Integer.parseInt(bartDateFormat1.format(fomDat));
final int min = Integer.parseInt(bartDateFormat2.format(fomDat));
time = pad(hour) + ":" + pad(min);
return time;
}
如果有任何想法,请指导我或提供任何替代方案。
答案 0 :(得分:2)
如果您的long
包含的值大于Integer.MAX_VALUE
或小于Integer.MIN_VALUE
,则将其转换为int
,然后返回{{ 1}},你不会再获得原始值。
如果您有“要求”,那么您的要求无法实施。你要做的是数学上的不可能性。
(你还应该考虑你误解了这个要求的可能性......)
答案 1 :(得分:2)
当时间存储为int
时,它通常以秒为单位,因为毫秒不适合。如果你这样做
long timeInMs = 1355399741522L;
int timeInSec = (int) (timeInMs / 1000); // now 1355399741
long timeInMs2 = timeInSec * 1000L; // now 1355399741000L
答案 2 :(得分:1)
您可以将long转换为String并创建一个Integer(String)对象。 但由于Long.MAX_VALUE(2 ^ 63-1)远远超过Integer.MAX_VALUE(2 ^ 31 - 1),因此如果长变量的长度超过了long变量的长度,则必须对其进行折衷。整数类型。
答案 3 :(得分:0)
public static String convertToTime(final long date) {
String time = null;
final SimpleDateFormat bartDateFormat1 = new SimpleDateFormat("H:m");
time = bartDateFormat1.format( date );
return time;
}