如何返回一个特定的日期格式作为DateTime数据类型

本文关键字:格式 日期 数据类型 DateTime 一个 何返回 返回 | 更新日期: 2023-09-27 18:08:00

我正在与实体框架进行查询,我需要比较2个数据时间。一个来自field,另一个来自select。问题是,我需要将用户输入转换为datetime,但以我想要的格式和我需要的数据类型。我需要返回一个像这样的值:

DateTime date = Convert.ToDataTime("2012-02-30");

但是日期变量的值是2012/02/30,我需要使用这种格式2012-02-30,数据类型必须是DateTime

如何返回一个特定的日期格式作为DateTime数据类型

如前所述,DateTime值没有与之关联的格式。所有的DateTimes都被当作date来处理,不管它们是从哪个字符串格式生成的。

如果您的问题是从字符串生成DateTime对象,请查看以下内容

Convert.ToDateTime

DateTime.TryParse

如果你的问题是比较两个日期时间,有内置的比较运算符,它们在DateTime上的作用和在其他任何时间上的作用一样好。

UserDate.Equals(FieldDate)
UserDate > FieldDate
UserDate < FieldDate

等等等等。

最后,如果你的问题是字符串格式,你不能准确地控制用户输入的内容,那么你需要专门问这个问题,因为我们需要知道更多关于用户可以输入的内容,告诉你你可以用它做什么。

添加编辑

看起来最后一个是你的问题…

尝试使用简单的字符替换

string newString = DateString.Replace("/", "-");

this将只适用于单一的,特定的,格式化更改…但是它会做你想做的事情。

在c#中,DateTime对象没有与之关联的格式,直到您将其转换为字符串。然后你可以用任何你想要的方式来格式化它。

类似地,当您从文本加载值时,它被转换为DateTime。然后可以在此对象上运行比较。

DateTime date1 = Convert.ToDataTime("2012-02-30");
DateTime date2 = Convert.ToDataTime("2012/02/30");
if (date1 == date2) Console.WriteLine("They match!");

我认为你问错了问题,因为误解了DateTime是如何工作的。它不会将值存储为字符串。你的字符串实际上只是Datetime的一种表示。

你真正需要做的是查看DateTime.ToString()的重写。

http://msdn.microsoft.com/en-gb/library/zdtaw1bw.aspx

当您输出DateTime时,使用类似

的内容
date.ToString("yyyy-MM-dd"); 

,您将得到所需的格式。

在基本理论方面,datetime本身不是作为字符串存储的。您只需要担心显示它的方式。