自从“永远”
以来,我一直有这个问题我住在一个我们使用英国日期格式的国家,例如dd / mm / yyyy但每当我尝试对托管在美国服务器上的sql db进行查询时,我有100%的时间遇到错误。
Convert.ToDateTime("2007-17-5")
会产生错误,因为Convert.ToDateTime("2007-5-17")
也会产生错误。
许多验证方法,许多t-sql查询以及我在大多数项目中尝试并部分解决的许多其他方法然而,我想知道是否有人有一种将字符串转换为日期的通用方法会不会引起任何问题?
或有关处理日期的任何好资源?
-----------编辑... -----------------
即使我正确格式化日期,对sql server的查询也不会产生任何值,即使我确定有..例如..如果我正在搜索属于1 /的日期的记录2009年1月1日(即2009年1月1日)至2009年5月1日(即2009年5月1日),不返回任何记录。当我尝试更改sql server的查询生成器中的日期时,它给出了一个错误,指出它不是我输入的有效日期......
答案 0 :(得分:3)
使用DateTime.TryParseExact并提供一些代表日期字符串的格式
答案 1 :(得分:2)
您在UI中处理了很多日期验证。
首先,在您的webconfig中,您需要设置您的文化:
<globalization requestEncoding="utf-8" responseEncoding="utf-8" culture="en-GB" uiCulture="en-GB" />
通过将Type属性设置为“Date”,可以在客户端使用CompareValidator控件。
<CompareValidator ID="id" runat="server"
ControlToValidate="controltovalidateid"
ErrorMessage="Invalid Date"
Type="Date" />
要限制用户选项,我在ASP.NET中使用了日历控件。关于该控件的一个好处是您可以在属性中设置日期格式:
<ajaxToolkit:Calendar runat="server"
TargetControlID="Date1"
CssClass="ClassName"
Format="dd/mm/yyyy"
PopupButtonID="Image1" />
其他信息
答案 2 :(得分:2)
2007-5-17 不是有效的国际日期(ISO 8601), 2007-05-17 是。如果您要使用国际格式 CCYY-MM-DD ,您需要包含领先的 0 s