铸造长到int

时间:2012-12-13 12:14:48

标签: java casting long-integer

我有一个变量获取当前时间并存储在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;
    }

如果有任何想法,请指导我或提供任何替代方案。

4 个答案:

答案 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;
    }