簡體   English   中英

如何在C#中將可為空的日期時間轉換為十進制

[英]How can I convert nullable datetime to decimal in c#

我正在嘗試轉換DateTime? 值到Decimal (注意: DateTime?Nullable

從此格式4/1/2011 12:00:00 AM到此格式( Decimal類型) 20110401

如何做到這一點?

像這樣:

DateTime? myDateTime = GetDateTime();
Decimal.Parse(myDateTime.Value.ToString("yyyyMMdd"));

要么:

DateTime myDateTime = GetDateTime();
Decimal.Parse(myDateTime.ToString("yyyyMMdd"));

取決於DateTime是否為Nullable

但是您實際上應該考慮用除Decimal之外的其他方式存儲它,就像將電話號碼存儲為Long您確實不應該這樣 主要是因為對以這種方式存儲的對象執行數學運算沒有意義。

您可以嘗試一下,

DateTime? dateTime = DateTime.Today;
string dateStr = dateTime.ToString("MMddyyyy");
decimal dec = Convert.ToDecimal(dateStr);

您可以通過一些數學來做到這一點:

DateTime? dt = DateTime.Today;
decimal d = dt.Value.Year*10000 + dt.Value.Month*100 + dt.Value.Day

...或將其轉換為:

DateTime? dt = DateTime.Today;
decimal d = Convert.ToDecimal(dt.Value.ToString("yyyyMMdd"));

如果您嘗試將此十進制值用於排序目的,請考慮也可以對字符串和DateTimes進行排序。

您可以使用ToBinary()獲得DateTime的二進制表示形式-然后可以將其分配給decimal

DateTime dt = DateTime.Now;
decimal dec = dt.ToBinary ();

這是最簡單的轉換,不涉及轉換為字符串然后返回。 如果您使用可為空的日期/時間,只需使用Value屬性從中獲取實際值(進行錯誤檢查等)。

暫無
暫無

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

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