繁体   English   中英

将long转换为int

[英]casting long to int

我有一个获取当前时间并长时间存储的变量。 但是我必须将其转换为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,肯定不会对我有用。 我已经测试过了。 但是我想要替代解决方案。

注意-我不想长时间存储。 作为其要求。 我正在使用以下功能将长时间转换为时间

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

如果有人有任何想法,请指导我或提供其他选择。

如果您的long包含的值大于Integer.MAX_VALUE或小于Integer.MIN_VALUE ,并且将其Integer.MIN_VALUE转换为int然后返回long ,则不会再次获得原始值。

如果您有“要求”来执行此操作,那么您的要求将无法实现。 您试图做的是数学上的不可能。

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

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

long timeInMs = 1355399741522L;
int timeInSec = (int) (timeInMs / 1000); // now 1355399741
long timeInMs2 = timeInSec * 1000L; // now 1355399741000L

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

public static String convertToTime(final long date) {
        String time = null;
        final SimpleDateFormat bartDateFormat1 = new SimpleDateFormat("H:m");
        time = bartDateFormat1.format( date );
        return time;
    }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM