我正在与实体框架进行查询,我需要比较2个数据时间。一个来自field,另一个来自select。问题是,我需要将用户输入转换为datetime,但以我想要的格式和我需要的数据类型。我需要返回一个像这样的值:
DateTime date = Convert.ToDataTime("2012-02-30");
但是日期变量的值是2012/02/30
,我需要使用这种格式2012-02-30
,数据类型必须是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本身不是作为字符串存储的。您只需要担心显示它的方式。