C# 如何在c中将可为空的datetime转换为十进制#
我正在尝试将C# 如何在c中将可为空的datetime转换为十进制#,c#,datetime,decimal,C#,Datetime,Decimal,我正在尝试将DateTime?值转换为Decimal。(注意:DateTime?可为null) 从该格式4/1/2011 12:00:00 AM到该格式(属于Decimal类型)20110401 如何做到这一点?你可以通过一点数学来做到这一点: DateTime? dt = DateTime.Today; decimal d = dt.Value.Year*10000 + dt.Value.Month*100 + dt.Value.Day …或将其转换为: DateTime? dt = Dat
DateTime?
值转换为Decimal
。(注意:DateTime?
可为null
)
从该格式4/1/2011 12:00:00 AM
到该格式(属于Decimal
类型)20110401
如何做到这一点?你可以通过一点数学来做到这一点:
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"));
在这种情况下,您尝试使用这个十进制值进行排序,请考虑也可以排序字符串和日期时间。
如下:
DateTime? myDateTime = GetDateTime();
Decimal.Parse(myDateTime.Value.ToString("yyyyMMdd"));
或:
取决于DateTime
是否为null
<>但您确实应该考虑将它存储在比DateTime? dateTime = DateTime.Today;
string dateStr = dateTime.ToString("MMddyyyy");
decimal dec = Convert.ToDecimal(dateStr);
您可以使用获取日期时间的二进制表示形式
——然后可以将其分配给十进制
DateTime dt = DateTime.Now;
decimal dec = dt.ToBinary ();
这是最直接的转换,不需要转换为字符串并返回。如果您使用的是可为空的日期/时间,只需使用
值
属性即可从中获取实际值(通过错误检查等)。您确定要的是十进制
而不是字符串
?可以通过ToString
:DateTime.UtcNow.ToString(“yyyyymmdd”)
以您的格式创建字符串表示形式。它必须是十进制的DateTime.Year*10000+DateTime.Month*100+DateTime.Day
。确实如此。实际上,所有东西(有例外吗?)都支持ToString()。编译并运行良好:DateTime dtNow=DateTime.Now;字符串zNow=dtNow.ToString();为什么它必须是小数点?听起来像是X-Y问题。mydatetime不是字符串,所以当我使用ToString(“yyyyMMdd”)@Nakres时,它会出错-它告诉你什么错误?DateTime不需要是字符串就可以调用ToString(…)
@Nakres实际存储的日期时间是什么类型的?实际的DateTime
类型包含.ToString
方法(基本上,向我们展示您的代码)。数据来自USSI。在我的代码中添加服务后,我可以看到它是这样的:2015年1月4日12:00:00 AMYes,@Nakres但它是什么类型的:String
,Char[]
,DateTime
。?它不接受年、月、日和tostring。@Nakres您的DateTime有哪种类型?@Nakres您真的在谈论这个值吗?缺少Convert.ToDecimal(dt.value.tostring(“yyyyMMdd”);worked@Nakres好的,我更新了我的代码。请把你最喜欢的答案标记为“注意”,这样这个话题就可以接近了。我要放开我的心了。如何使用tostring作为datetime。代码真的在您的机器中工作吗?ToString方法位于所有类的基类中,因此它存在于您创建的任何类中!除此之外,这是一个可为空的日期时间,DateTime.Value.ToString(“mmddyyy”)
@Crowcoder有时称之为DateTime,有时称之为DateTime?。接得好@Crowcoder,为什么需要dateTime.Value.ToString()
DateTime.ToString()
适合我吗?
DateTime dt = DateTime.Now;
decimal dec = dt.ToBinary ();