2012-04-27 99 views
0

我需要一些幫助鑄造大雙爲int,在Java:鑄造雙爲int像java

(int)System.currentTimeMillis(); //result -186983989 (java) 

結果總是返回int32.minvalue,但我需要的結果相同的Java。 但在C#:提前

DateTime Jan1st1970 = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); 
TimeSpan span = DateTime.UtcNow - Jan1st1970; 
Int32 resultado = (int)span.TotalMilliseconds; //result is always -2147483648 and i need same as java 

謝謝,可以看到這個圖像https://public.blu.livefilestore.com/y1pwU6fnT0v663NPqa7cSwwU9MSFQeO1TjdOdip1GFn8Eqg0Fgo_rsA3ER2jw5RDpXGOa1WiMc_PFIzzjxkqWe9zQ/wtf.png?psid=1

+3

什麼是你真正想達到什麼目的?將'System.currentTimeMillis()'轉換爲'int'在Java中沒有任何用處。你真的*想要*「長」值的底部32位? – 2012-04-27 18:58:43

+0

我必須遷移那個java代碼,但在C#中給出了不同的結果。 – user1361817 2012-04-27 19:20:57

+1

但是,你究竟在使用*這個值是爲了什麼?這是一個相當無意義的價值。請注意,它不*返回MinValue,即-2,147,483,648。 – 2012-04-27 19:48:53

回答

2

int的範圍爲-2,147,483,648至2,147,483,647。結果比這大得多。您需要更大範圍的更大數據類型。嘗試long而不是int

long resultado = (long)span.TotalMilliseconds; 

結果:

resultado 1335553169530 long 
+0

我需要模擬一個java的方法,並將其轉換爲(int)並返回約-1790999999,但在C#中總是返回MinValue。 – user1361817 2012-04-27 18:58:16

+2

@ user1361817:那你*可以*使用'(int)(long)span.TotalMilliseconds',但這很奇怪。它看起來像你的原始代碼是越野車。 – 2012-04-27 19:02:35

+0

在調試模式下,顯示我需要的結果,但執行時會返回不同的值。 :S – user1361817 2012-04-27 19:37:00