C#将字符串转换为不带时间的日期时间

本文关键字:时间 日期 字符串 转换 | 更新日期: 2023-09-27 18:25:41

这似乎不可能实现我想要的(至少根据我读过的一些文章)。但只是想仔细检查一下。我正在从数据库中读取DateTime。在数据库中,它写得像"01.01.2011",但当我用SQL读取它并将其存储在string中时,它会说"01.01.201100:00:00"。然后我想好了,我会把string的时间缩短。但有一个诀窍,这似乎是不可能的。即使我从string中剪切出"00:00:00"部分(它只是说"01.01.2011"),并将其转换为DateTime,"00:00:00"仍在显示。我是C#的新手,但这部分似乎在Java中得到了更好的解决,在Java中,你可以定义你想要的日期,并且它是这样显示的(当你不想要的时候,不需要插入时间)。所以,为了明确一点,是真的不可能实现我想要的(我必须在我的演示层中注意正确的格式),还是我只是没有找到合适的信息?

感谢

C#将字符串转换为不带时间的日期时间

.Net中的DateTime始终是日期和时间。如果你愿意,你可以忽略时间部分,但它仍然存在。在内部,DateTime跟踪自1/10001以来的全部刻度数。(一毫秒内有10000个刻度)。因此,DateTime不可能有时间分量。

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

你需要小心,一旦你忽略了时间,你就会总是忽略时间。否则,在巴西等地处理夏令时问题时可能会遇到问题,那里的时间从晚上11:59:59过渡到凌晨1:00。如果你不小心处理数据,那么午夜填充在DateTime中的仅限日期的数据可能会被误解为实际上不存在的当地时间。

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

myDatTime.ToString("MMM dd, yyyy");将完成

如果我理解你。。这可能会有所帮助。
在c#中:
if(!string.IsNullOrEmpty(yourDateTime)) { yourDateTime.ToString("dd/MM/yyyy"); }
在sql server中:

select convert(varchar, yourDateTime ,102) as [yourDateTime]