如何在c#中将可空日期时间转换为十进制

时间:2016-10-31 13:50:51

标签: c# datetime decimal

我正在尝试将DateTime?值转换为Decimal。 (注意:DateTime?Nullable

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

如何实现这一目标?

4 个答案:

答案 0 :(得分:1)

像这样:

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

或:

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

取决于DateTime是否为Nullable

但你真的应该考虑以Decimal之外的其他方式存储它,就像将电话号码存储为Longwhich you really shouldn't do一样。主要是因为数学运算在以这种方式存储的对象上执行时没有意义。

答案 1 :(得分:1)

你可以试试这个,

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

答案 2 :(得分:0)

你可以用一点点数学来做到这一点:

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"));

如果您尝试使用此十进制值进行排序,请考虑可以订购字符串和日期时间。

答案 3 :(得分:0)

您可以使用ToBinary()获取DateTime的二进制表示形式 - 然后可以将其分配给decimal

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

这是最简单的转换,不涉及转换为字符串和返回。如果您使用可以为空的日期/时间,只需使用Value属性从中获取实际值(使用错误检查等)