我试图从javascript应用程序发送JSON请求,并在我的SQL DB中创建此对象(HourRegistration),但出于某种原因,我无法将日期从json解析为有效的DateTime。
JS的JSON日期
hourRegistration.Date = "12/08/2015";
所以dd/MM/yyyy
我试图像这样解析:
Date = DateTime.ParseExact(hourRegistration.Date, "dd/MM/yyyy", CultureInfo.InvariantCulture)
整个方法
public void CreateHours(HourRegistrationDTO hourRegistration)
{
DAO.Instance.HourRegistration.Add(new HourRegistration()
{
Date = DateTime.ParseExact(hourRegistration.Date, "dd/MM/yyyy", CultureInfo.InvariantCulture),
Cust_ID = hourRegistration.Cust_id,
Login_ID = hourRegistration.Login_id,
Hours = hourRegistration.Hours,
Comment = hourRegistration.Comment
});
DAO.Instance.SaveChanges();
}
ToCharArray()
我真的不知道为什么这不起作用。据我所知,这应该有用吗?
答案 0 :(得分:1)
这没有错误:
DateTime date = DateTime.ParseExact("12/08/2015", "dd/MM/yyyy", CultureInfo.InvariantCulture);
,所以问题必须在其他地方。
我必须假设你的hourRegistration.Date
变量是空字符串。在这种情况下,您将获得例外"String was not recognized as a valid DateTime."
在解析之前调试该值。
修改强>
根据你的评论,给我们这样的屏幕截图是没有问题的:
只是为了确定并澄清问题范围...... 谢谢!
编辑2
这听起来很奇怪:
尝试重命名您的string
媒体资源,看看它是否正在解决问题。
在名为string
Date
对象上查看以下行为
有人可以告诉我为什么在调试器中处理为DateTime
对象?它显然是string
变量。
更新:此问题已在此处详细说明:String variable name Date acts weird in debugger
答案 1 :(得分:0)
目前很明显你的字符串还有其他一些字符。您可以尝试使用这样的简单自定义方法删除此字符:
static string Validate(string dirty)
{
string validChars = @"0123456789/-\."; string newStr = "";
for (int i = 0; i < dirty.Length; i++)
if (validChars.IndexOf(dirty[i]) > -1) newStr += dirty[i];
return newStr;
}
并使用它:
Date = DateTime.ParseExact(Validate(hourRegistration.Date), "dd/MM/yyyy", CultureInfo.InvariantCulture)
答案 2 :(得分:-1)
请尝试:
Date = DateTime.Parse(hourRegistration.Date, CultureInfo.GetCultureInfo("ru-Ru"));