1

我有一个变量可以获取当前时间并长期存储。但我必须将其转换为int,因为这是要求。所以我正在做的是用 (int) 转换 val 并将其存储在 int 中。

Val = 1355399741522 (long)
Int Val = -1809346991 (after casting to int)

After Casting from int to long -> Val = -1809346991 //TESTED

现在我的问题是,如果我想再次将此 int 转换回 long ,那么它肯定对我不起作用。我已经测试过了。但我想要替代解决方案。

注意 - 我不想储存太久。作为它的要求。我正在使用下面的函数将 long 转换为 time

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

4 回答 4

2

如果您的 along包含大于Integer.MAX_VALUE或小于的值Integer.MIN_VALUE,并且您将其转换为 anint然后再转换为 a long,您将无法再次获得原始值。

如果您有这样做的“要求”,那么您的要求是不可实现的。您正在尝试做的是数学上的不可能。

(您还应该考虑您误解了要求的可能性......)

于 2012-12-13T12:30:08.610 回答
2

当时间存储为时,int它通常以秒为单位,因为毫秒不适合。如果你这样做

long timeInMs = 1355399741522L;
int timeInSec = (int) (timeInMs / 1000); // now 1355399741
long timeInMs2 = timeInSec * 1000L; // now 1355399741000L
于 2012-12-13T12:44:46.167 回答
1

您可以将 long 转换为 String 并创建一个 Integer(String) 对象。但由于 Long.MAX_VALUE(2^63-1) 远大于 Integer.MAX_VALUE(2^31 - 1),因此如果 long 变量的长度超过了整数类型。

于 2012-12-13T12:31:30.057 回答
0
public static String convertToTime(final long date) {
        String time = null;
        final SimpleDateFormat bartDateFormat1 = new SimpleDateFormat("H:m");
        time = bartDateFormat1.format( date );
        return time;
    }
于 2012-12-13T12:43:39.637 回答