.net 将DateTime转换为long,反之亦然

7hiiyaii  于 2022-12-27  发布在  .NET
关注(0)|答案(9)|浏览(231)

我想把日期作为数字存储在表中。我知道怎么做,但是我不知道怎么返回。我怎样才能把一个长变量转换成ToDateTime呢?

DateTime now = DateTime.Now;
long t = now.ToFileTime();
DateTime today = t.ToDateTime;  // I am looking for something like this line. This Method does not exist

我知道有很多方法可以将DateTime转换为long。我不介意使用哪种技术。我只想有一种方法可以来回转换。

5fjcxozz

5fjcxozz1#

距日期时间的长度:
long DateTime.Ticks
结束日期时间从长:
new DateTime(long)

unhi4e5o

unhi4e5o2#

从长到日期时间:第一个月
从日期时间到长:DateTime.Ticks

wr98u20j

wr98u20j4#

因为你使用的是ToFileTime,你可能想用FromFileTime来做相反的事情,但是note
通常,FromFileTime方法还原由ToFileTime方法保存的DateTime值。但是,在下列情况下,这两个值可能不同:
如果DateTime值的序列化和反序列化发生在不同的时区。例如,如果在美国东部时区序列化时间为12:30 P.M.的DateTime值,然后在美国太平洋时区反序列化,则原始值12:30 P.M.将调整为9:30 A.M.,以反映两个时区之间的差异。
如果序列化的DateTime值表示本地时区中的无效时间。在这种情况下,ToFileTime方法将调整还原的DateTime值,使其表示本地时区中的有效时间。
如果您不关心存储DateTime的哪个long表示,可以按照其他人的建议使用TicksTicks可能更好,这取决于您的需求,因为ToFileTime返回的值似乎位于Windows文件系统API的上下文中)。

fzsnzjdm

fzsnzjdm5#

有几种可能性(注意,这些长值与Unix纪元不同。
对于您的示例(要反转ToFileTime()),只需使用DateTime.FromFileTime(t)

xt0899hw

xt0899hw6#

有一个DateTime构造函数需要长。

DateTime today = new DateTime(t); // where t represents long format of dateTime
68de4m5k

68de4m5k7#

long dateTime = DateTime.Now.Ticks;
   Console.WriteLine(dateTime);
   Console.WriteLine(new DateTime(dateTime));
   Console.ReadKey();
iszxjhcz

iszxjhcz8#

如果要使用自1970年以来的秒数而不是刻度:
协调世界时:

long secondsSince1970 = DateTimeOffset.Now.ToUnixTimeSeconds();

当地时间:

long secondsSince1970 = DateTime.Now.Ticks / 10000000 - 62135596800;

并返回到日期时间

DateTime value = DateTime.MinValue.AddSeconds(secondsSince1970).AddYears(1969);
z4iuyo4d

z4iuyo4d9#

我将添加一些从字符串到DateTime再到long的转换

string timeString = "2016-08-04";
DateTime date = DateTime.Parse(timeString);
long dateTime = date.Ticks;

这是一种简短的说法:

long dateTime = DateTime.Parse("2016-08-04").Ticks;

//And for the long to DateTime

DateTime dateTime = new DateTime(dateTime);

相关问题