我遇到一个日期格式的问题。在调用UpdateItem操作时,CreatedAt
的日期格式变得混乱。顺便说一下,我使用的是JSON,所以必须与日期序列化有关。
模型:
public class Item
{
public int ItemId { get; set; }
public string ItemName { get; set; }
public string CreatedBy { get; set; }
public DateTime? CreatedAt { get; set; }
public string UpdatedBy { get; set; }
public DateTime? UpdatedAt { get; set; }
}
创建行动:
public int CreateItem(Item item)
{
var item = new Item();
viewModel.CopyToItem(item);
item.CreatedBy = WebSecurity.CurrentUserName;
item.CreatedAt = DateTime.Now;
db.Items.Add(item);
db.SaveChanges();
return item.ItemId;
}
更新行动:
public void UpdateItem(Item item)
{
item.UpdatedBy = WebSecurity.CurrentUserName;
item.UpdatedAt = DateTime.Now;
db.SaveChanges();
}
日期格式不正确:
/Date(1395366469723)/
应该是:
2014-03-21T09:50:01.747
我在控制器中尝试了这一点,但得到String was not recognized as a valid DateTime'
错误。
string isoJson = JsonConvert.SerializeObject(DateTime.Now, new IsoDateTimeConverter());
item.CreatedAt = DateTime.ParseExact(isoJson, "yyyy-MM-dd hh:mm:ss.ttt", CultureInfo.InvariantCulture);
在模型中使用非空的DateTime
也没有修复它。
Javascript使用Unix时间。如果你想用给定的javascript日期值获得一个DateTime对象,从1970年1月1日开始创建一个新的DateTime对象,然后添加毫秒。
观察:
var dt = new DateTime(1970, 1, 1).AddMilliseconds(1395366469723);
// "21/03/2014 1:47:49 AM"