我正在尝试将DateTime?
值转换为Decimal
。 (注意:DateTime?
是Nullable
)
从此格式4/1/2011 12:00:00 AM
到此格式(Decimal
类型)20110401
。
如何实现这一目标?
答案 0 :(得分:1)
像这样:
DateTime? myDateTime = GetDateTime();
Decimal.Parse(myDateTime.Value.ToString("yyyyMMdd"));
或:
DateTime myDateTime = GetDateTime();
Decimal.Parse(myDateTime.ToString("yyyyMMdd"));
取决于DateTime
是否为Nullable
。
但你真的应该考虑以Decimal
之外的其他方式存储它,就像将电话号码存储为Long
,which 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
属性从中获取实际值(使用错误检查等)