簡體   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