1

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

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

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

4

3 回答 3

0

在 C#DateTime中,除非将对象转换为字符串,否则对象没有与之关联的格式。然后可以按照您想要的任何方式对其进行格式化。

同样,当您从文本加载值时,它会转换为DateTime. 然后,您可以在此对象上运行比较。

DateTime date1 = Convert.ToDataTime("2012-02-30");
DateTime date2 = Convert.ToDataTime("2012/02/30");

if (date1 == date2) Console.WriteLine("They match!");
于 2013-04-08T17:05:59.600 回答
0

由于对 DateTime 的工作方式存在误解,我认为您提出了错误的问题。它不会将值存储为字符串。您的字符串实际上只是日期时间的表示。

您实际需要做的是查看 DateTime.ToString() 覆盖。

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

当你输出你的日期时间时,使用类似的东西

date.ToString("yyyy-MM-dd"); 

您将获得所需的格式。

但是,就基本理论而言,日期时间本身并不存储为字符串。您只需要担心显示它的方式。

于 2013-04-08T17:06:36.790 回答
0

如前所述,DateTime 值没有与之关联的格式。所有 DateTimes 都作为日期处理,无论它们是从什么字符串格式生成的。

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

Convert.ToDateTime

或者

DateTime.TryParse

如果您的问题是比较两个日期时间,则内置的比较运算符在 DateTime 上的功能与在其他任何时间上的功能一样好。

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

等等等等等等。

最后,如果您的问题是字符串格式并且您无法准确控制用户输入的内容,那么您需要专门提出这个问题,因为我们需要更多地了解用户可以输入的内容,以告诉您您可能能够输入的内容与它有关。

添加编辑

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

尝试使用简单的字符替换。

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

这只适用于单一的、特定的格式更改……但它会做你想做的事。

于 2013-04-08T17:11:41.150 回答