c# - 用户代码 datetime 未处理 FormatException

标签 c# datetime

当我尝试从文本框中获取日期值时,值为:"05/22/2014" 我想将它插入到我的具有日期时间格式的数据库字段中,所以我想先转换它。因此,我对文本框的文本属性中的值使用了 Convert.ToDateTime 函数。但是我收到一条错误消息

FormatException was unhandled by user code. String was not recognized as a valid DateTime.

这不是我在文本框文本值上使用 Convert.ToDateTime 时所做的吗?

<asp:TextBox ID="cldStartProj" CssClass="datePicker" TextMode="DateTime" runat="server"></asp:TextBox> 
DateTime dtDateStart = Convert.ToDateTime(cldStartProj.Text);

最佳答案

Convert.ToDateTime(string)使用 CurrentCulture默认情况下。这是如何implemented ;

public static DateTime ToDateTime(String value)
{
    if (value == null)
        return new DateTime(0);
    return DateTime.Parse(value, CultureInfo.CurrentCulture);
}

您的CurrentCulture 可能没有MM/dd/yyyy 格式作为标准日期和时间。这就是为什么您的 Convert.ToDateTime 会失败的原因。您可以使用 GetAllDateTimePatterns 查看所有标准日期和时间模式方法。

这里有一个关于 LINQPad 的例子;

CultureInfo.CurrentCulture.DateTimeFormat.GetAllDateTimePatterns().Dump();

您可以使用 DateTime.TryParseExactDateTime.ParseExact解析自定义日期和时间字符串的方法。

string s =  "05/22/2014";
DateTime dt;
if(DateTime.TryParseExact(s, "MM/dd/yyyy", CultureInfo.CurrentCulture,
                          DateTimeStyles.None, out dt))
{
   // parsing successful
}
else
{
   // not successful
}

但请记住,/ Custom Format Specifier在自定义日期和格式字符串中具有特殊含义。这意味着 用当前文化日期分隔符替换我。这意味着即使您的字符串格式完全相同,如果您的 DateSeparator property不是/,你的解析操作将失败。

the property was 'en-ca'

正如我所说,您的文化没有标准格式如 MM/dd/yyyy。这里是您的 en-ca 文化支持的标准格式的完整列表;

foreach(var format in CultureInfo.GetCultureInfo("en-ca").DateTimeFormat.GetAllDateTimePatterns())
{
    Console.WriteLine(format);
}

输出将是;

dd/MM/yyyy
dd/MM/yy
d/M/yy
yyyy-MM-dd
yy-MM-dd
M/dd/yy
dd-MMM-yy
dd-MMM-yyyy
MMMM-dd-yy
MMMM d, yyyy
d-MMM-yy
dddd, MMMM dd, yyyy
MMMM-dd-yy h:mm tt
MMMM-dd-yy hh:mm tt
MMMM-dd-yy HH:mm
MMMM-dd-yy H:mm
MMMM d, yyyy h:mm tt
MMMM d, yyyy hh:mm tt
MMMM d, yyyy HH:mm
MMMM d, yyyy H:mm
d-MMM-yy h:mm tt
d-MMM-yy hh:mm tt
d-MMM-yy HH:mm
d-MMM-yy H:mm
dddd, MMMM dd, yyyy h:mm tt
dddd, MMMM dd, yyyy hh:mm tt
dddd, MMMM dd, yyyy HH:mm
dddd, MMMM dd, yyyy H:mm
MMMM-dd-yy h:mm:ss tt
MMMM-dd-yy hh:mm:ss tt
MMMM-dd-yy HH:mm:ss
MMMM-dd-yy H:mm:ss
MMMM d, yyyy h:mm:ss tt
MMMM d, yyyy hh:mm:ss tt
MMMM d, yyyy HH:mm:ss
MMMM d, yyyy H:mm:ss
d-MMM-yy h:mm:ss tt
d-MMM-yy hh:mm:ss tt
d-MMM-yy HH:mm:ss
d-MMM-yy H:mm:ss
dddd, MMMM dd, yyyy h:mm:ss tt
dddd, MMMM dd, yyyy hh:mm:ss tt
dddd, MMMM dd, yyyy HH:mm:ss
dddd, MMMM dd, yyyy H:mm:ss
dd/MM/yyyy h:mm tt
dd/MM/yyyy hh:mm tt
dd/MM/yyyy HH:mm
dd/MM/yyyy H:mm
dd/MM/yy h:mm tt
dd/MM/yy hh:mm tt
dd/MM/yy HH:mm
dd/MM/yy H:mm
d/M/yy h:mm tt
d/M/yy hh:mm tt
d/M/yy HH:mm
d/M/yy H:mm
yyyy-MM-dd h:mm tt
yyyy-MM-dd hh:mm tt
yyyy-MM-dd HH:mm
yyyy-MM-dd H:mm
yy-MM-dd h:mm tt
yy-MM-dd hh:mm tt
yy-MM-dd HH:mm
yy-MM-dd H:mm
M/dd/yy h:mm tt
M/dd/yy hh:mm tt
M/dd/yy HH:mm
M/dd/yy H:mm
dd-MMM-yy h:mm tt
dd-MMM-yy hh:mm tt
dd-MMM-yy HH:mm
dd-MMM-yy H:mm
dd-MMM-yyyy h:mm tt
dd-MMM-yyyy hh:mm tt
dd-MMM-yyyy HH:mm
dd-MMM-yyyy H:mm
dd/MM/yyyy h:mm:ss tt
dd/MM/yyyy hh:mm:ss tt
dd/MM/yyyy HH:mm:ss
dd/MM/yyyy H:mm:ss
dd/MM/yy h:mm:ss tt
dd/MM/yy hh:mm:ss tt
dd/MM/yy HH:mm:ss
dd/MM/yy H:mm:ss
d/M/yy h:mm:ss tt
d/M/yy hh:mm:ss tt
d/M/yy HH:mm:ss
d/M/yy H:mm:ss
yyyy-MM-dd h:mm:ss tt
yyyy-MM-dd hh:mm:ss tt
yyyy-MM-dd HH:mm:ss
yyyy-MM-dd H:mm:ss
yy-MM-dd h:mm:ss tt
yy-MM-dd hh:mm:ss tt
yy-MM-dd HH:mm:ss
yy-MM-dd H:mm:ss
M/dd/yy h:mm:ss tt
M/dd/yy hh:mm:ss tt
M/dd/yy HH:mm:ss
M/dd/yy H:mm:ss
dd-MMM-yy h:mm:ss tt
dd-MMM-yy hh:mm:ss tt
dd-MMM-yy HH:mm:ss
dd-MMM-yy H:mm:ss
dd-MMM-yyyy h:mm:ss tt
dd-MMM-yyyy hh:mm:ss tt
dd-MMM-yyyy HH:mm:ss
dd-MMM-yyyy H:mm:ss
MMMM dd
MMMM dd
yyyy'-'MM'-'dd'T'HH':'mm':'ss.fffffffK
yyyy'-'MM'-'dd'T'HH':'mm':'ss.fffffffK
ddd, dd MMM yyyy HH':'mm':'ss 'GMT'
ddd, dd MMM yyyy HH':'mm':'ss 'GMT'
yyyy'-'MM'-'dd'T'HH':'mm':'ss
h:mm tt
hh:mm tt
HH:mm
H:mm
h:mm:ss tt
hh:mm:ss tt
HH:mm:ss
H:mm:ss
yyyy'-'MM'-'dd HH':'mm':'ss'Z'
MMMM-dd-yy h:mm:ss tt
MMMM-dd-yy hh:mm:ss tt
MMMM-dd-yy HH:mm:ss
MMMM-dd-yy H:mm:ss
MMMM d, yyyy h:mm:ss tt
MMMM d, yyyy hh:mm:ss tt
MMMM d, yyyy HH:mm:ss
MMMM d, yyyy H:mm:ss
d-MMM-yy h:mm:ss tt
d-MMM-yy hh:mm:ss tt
d-MMM-yy HH:mm:ss
d-MMM-yy H:mm:ss
dddd, MMMM dd, yyyy h:mm:ss tt
dddd, MMMM dd, yyyy hh:mm:ss tt
dddd, MMMM dd, yyyy HH:mm:ss
dddd, MMMM dd, yyyy H:mm:ss
MMMM, yyyy
MMMM, yyyy

关于c# - 用户代码 datetime 未处理 FormatException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23814819/

相关文章:

mysql - 在给定时间范围内按小时分组

c# - Entity Framework 中的整数列表

c# - Windows应用程序中的身份验证 "Cannot work with a MobileServiceClient that does not specify a gateway URI."

laravel - 如何在验证 laravel 中设置比较日期时间?

datetime - VBScript 中的日期格式 - 用 0(零)作为月份前缀,例如07 而不是 7

php - 更改Mysql current_timestamp默认值

c# - 验证错误 : The value 'on' is not valid for <<property name>>

c# - 将 List<int> 作为查询参数传递给 SQL Server

c# - PerformanceCounterCategory.Exists 抛出 'Input string was not in a correct format.'

python - 在 Pandas 数据框中查找最近日期时间的索引