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