2014-10-05 243 views
0

看起来好像它不是我想要的(至少根据我读过的一些文章)。但是要仔细检查一下。我正在从我的数据库中读取DateTime。在数据库中它被写为“01.01.2011”,但是当我用SQL读取它并将它存储在string中时,它会显示“01.01.2011 00:00:00”。 然后,我想好了,我只是从string减少时间。但有一个窍门,似乎这是不可能的。即使从string(也就是“01.01.2011”)中删除“00:00:00”部分,并将其转换为DateTime,仍然显示“00:00:00”。 我是C#的新手,但是看起来这个部分在Java中可以更好地解决,您可以在其中定义您希望如何使用日期的方式,并且可以像这样显示(不需要在不需要的情况下进行排序)。 所以为了说清楚,是否真的不可能实现我想要的(并且我必须在我的表示层中处理正确的格式),还是我没有找到正确的信息?C#将字符串转换为无日期时间的日期时间

感谢

+0

我不清楚你在努力达到什么目的。你能告诉我们你实际上想要做什么吗?在你的问题中交换最后'我想要'的简短描述。 – 2014-10-05 23:03:51

回答

1

DateTime在.NET是总是的日期和时间。如果你喜欢,你可以忽略时间部分,但它仍然存在。在内部,DateTime自1/1/0001以来跟踪整个滴答数。 (毫秒中有10,000个滴答声)。所以DateTime而不是是不可能有时间分量的。

对于仅限日期的数据,常见约定是使用时间设置为午夜(00:00:00)的日期。您可以通过使用其.Date属性从任何DateTime中获得这些中的一个。

你一定要小心,一旦你忽略了这个时间,那你总是忽略时间。否则,在巴西等地处理夏令时问题时,您可能会遇到问题 - 时间从晚上11:59:59到凌晨1:00:00。如果您对如何处理数据不够谨慎,那么在午夜时分填入DateTime的仅限日期的数据可能会被误解为实际上并不存在的本地时间。

在.NET Framework中没有时间的情况下没有真正日期的内置类型。但是,您可以在Noda Time库的LocalDate结构中找到它。如果你有很多基于日期的业务逻辑,你可能会考虑使用它。

+0

谢谢,这也是我已经发现的,但想在这里检查它(因为我无法相信它)。我也读过关于野田时间的消息,但是我想在尝试之前我会检查它是否真的不可能使用本地C#。再次感谢 – user3466562 2014-10-06 08:54:51

+0

NP。此外,您还在比较Java,但也存在类似的问题。 'java.util.Date'是日期+时间类型,“日历”也是。 Joda-Time和Java8都有一个'LocalDate'类型,类似于Noda Time的。 – 2014-10-06 16:29:49

0

myDatTime.ToString("MMM dd, yyyy");会做的伎俩

+0

所以我必须将它从字符串转换为datetime(因为从sql我把它作为一个字符串),然后从datetime到字符串(当应用你的功能),然后再次datetime(因为我需要它作为日期时间)? – user3466562 2014-10-05 22:45:35

+0

@ user3466562 c#支持直接使用数据库日期时间类型进行日期时间类型转换。所以当你读/写数据库时,你可以传入datatime对象作为参数,它会很乐意接受它。如果你只想显示没有时间的日期,那么做字符串方法 – Steve 2014-10-05 22:49:10

+0

我也看到了,但问题是当datetime为空时。所以我想我会把它作为字符串读取,然后处理它。但这似乎是一个屁股疼痛。据此:http://social.msdn.microsoft.com/Forums/vstudio/en-US/4ff9b7c9-ef08-4fe3-a579-d8a0c7188796/remove-time-from-datetimeminvalue它是不可能截断时间从在C#中的日期时间。所以我想我会检查如果字符串日期是空的,如果不检索它作为日期时间 – user3466562 2014-10-05 23:00:11

0

如果我理解你..这可能会有帮助。
在C#:
if(!string.IsNullOrEmpty(yourDateTime)) { yourDateTime.ToString("dd/MM/yyyy"); }
在SQL服务器

select convert(varchar, yourDateTime ,102) as [yourDateTime] 
相关问题