簡體   English   中英

C#中的等效java轉換

[英]Equivalent java cast in C#

我需要幫助來遷移java方法:

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

但是在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

這是在調試快速監視顯示正確的值罕見becouse,但在執行resultado常是-2147483648

我需要這個-186983989結果,和java一樣。

你會想要使用Int64(長)。 Int32不足以容納該值。

Int32.MaxValue = 2,147,483,647
Int64.MaxValue = 9,223,372,036,854,775,808

http://forums.asp.net/post/1203789.aspx

TotalMilliseconds是一個double,而不是Int32。 可能是你的問題

為了模仿溢出行為你可以使用unchecked關鍵字來做某些事情,但我不太了解Java是否知道這是否正確

DateTime Jan1st1970 = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
TimeSpan span = DateTime.UtcNow - Jan1st1970;

unchecked{
     int mm = Int32.MaxValue;
     mm += (int)(span.TotalMilliseconds % Int32.MaxValue);
     Console.WriteLine(mm); 
}

拋開-2147483648 = Int32.MinValue

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM