我正在使用实体框架进行查询,我需要比较 2 个数据时间。一个来自现场,另一个来自选择。问题是我需要将用户输入转换为日期时间,但需要以我想要的格式和我需要的数据类型。我需要返回这样的值:
DateTime date = Convert.ToDataTime("2012-02-30");
但是日期变量的值是2012/02/30
,我需要这种格式2012-02-30
,数据类型必须是 DateTime
我正在使用实体框架进行查询,我需要比较 2 个数据时间。一个来自现场,另一个来自选择。问题是我需要将用户输入转换为日期时间,但需要以我想要的格式和我需要的数据类型。我需要返回这样的值:
DateTime date = Convert.ToDataTime("2012-02-30");
但是日期变量的值是2012/02/30
,我需要这种格式2012-02-30
,数据类型必须是 DateTime
在 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.ToString() 覆盖。
链接 http://msdn.microsoft.com/en-gb/library/zdtaw1bw.aspx
当你输出你的日期时间时,使用类似的东西
date.ToString("yyyy-MM-dd");
您将获得所需的格式。
但是,就基本理论而言,日期时间本身并不存储为字符串。您只需要担心显示它的方式。
如前所述,DateTime 值没有与之关联的格式。所有 DateTimes 都作为日期处理,无论它们是从什么字符串格式生成的。
如果您的问题是从字符串生成 DateTime 对象,请查看以下内容
Convert.ToDateTime
或者
DateTime.TryParse
如果您的问题是比较两个日期时间,则内置的比较运算符在 DateTime 上的功能与在其他任何时间上的功能一样好。
UserDate.Equals(FieldDate)
UserDate > FieldDate
UserDate < FieldDate
等等等等等等。
最后,如果您的问题是字符串格式并且您无法准确控制用户输入的内容,那么您需要专门提出这个问题,因为我们需要更多地了解用户可以输入的内容,以告诉您您可能能够输入的内容与它有关。
添加编辑
看起来最后一个是你的问题......
尝试使用简单的字符替换。
string newString = DateString.Replace("/", "-");
这只适用于单一的、特定的格式更改……但它会做你想做的事。