我正在尝试从javascript应用程序发送JSON请求,并在我的SQL DB中创建此对象(HourRegistration),但由于某种原因,我无法将日期从json解析为有效的DateTime.
来自JS的JSON日期
hourRegistration.Date = "12/08/2015";
Run Code Online (Sandbox Code Playgroud)
所以 dd/MM/yyyy
我试图像这样解析:
Date = DateTime.ParseExact(hourRegistration.Date, "dd/MM/yyyy", CultureInfo.InvariantCulture)
Run Code Online (Sandbox Code Playgroud)
整个方法
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();
}
Run Code Online (Sandbox Code Playgroud)
ToCharArray()
我真的不知道为什么这不起作用.据我所知,这应该有用吗?
你的字符串值hourRegistration.Date不是你想象的那样。
对于 .NET 中的字符串,存在许多 Unicode 字符,这些字符要么根本不出现在调试表示中,要么实际上不是它们显示的字符。在您的情况下,如ToCharArray调试扩展所示,您的字符串实际上包含许多U+200EUnicode 字符“从左到右标记”(U+200E)字符。
这些在调试表示中是不可见的,但在尝试解析日期时是相关的。我不知道他们是如何到达那里的,也不知道他们为什么在那里——这是你需要进一步研究的事情。
要解决您眼前的问题,在解析日期之前,请从字符串中删除所有非 ASCII 字符,如下所示:
var actualDateString = new String(hourRegistration.Date
.ToCharArray()
.Where(c => c <= 255)
.ToArray()
);
Run Code Online (Sandbox Code Playgroud)
(我刚刚把它敲出来,所以它不是很漂亮)
那么你应该能够根据actualDateString需要进行解析。
| 归档时间: |
|
| 查看次数: |
998 次 |
| 最近记录: |