我有以下实体,它有 2 个日期时间字段..
public class Contactos
{
public int IdContacto { get; set; }
public string PrimerNombre {
get;set;
}
//Code cut for brevity
public DateTime? FechaConsulta { get; set; }
public DateTime? FechaArchivado { get; set; }
}
然后在我的 api 上我有这个
[ResponseType(typeof(Contactos))]
public List<Contactos> GetContactosDepurar(DateTime fechaInicial)
{
var contactos = ContactosDao.GetContactosDepurados(fechaInicial);
return contactos.ToList();
}
还有这个
public static List<Contactos> GetContactosDepurados(DateTime fechaInicial)
{
var fecha = fechaInicial.ToString("yyyy/MM/dd");
string sql = @"SP_ConsultarContactosDepurar";
return Db.Read(sql, ContactosDepurar, new object[]
{
"@fechaInicial", fechaInicial
}).ToList();
}
static readonly Func<IDataReader, Contactos> ContactosDepurar = reader =>
new Contactos
{
IdContacto = reader["idContacto"].AsInt(),
PrimerNombre = reader["primerNombre"].ToString(),
FechaArchivado = reader["fechaArchivado"] is DBNull ? (DateTime?)null : DateTime.ParseExact(reader["fechaArchivado"].ToString(), "dd/mm/yyyy", CultureInfo.CurrentCulture),
FechaConsulta = reader["fechaConsulta"] is DBNull ? (DateTime?)null: DateTime.ParseExact(reader["fechaConsulta"].ToString(), "dd/mm/yyyy", CultureInfo.CurrentCulture)
};
问题是,在检查 POSTMAN 上的 RETURN 值时,日期字段以数字形式返回:
"FechaConsulta": "/Date(1459832400000-0500)/",
只需使用内置的时间函数将时间转换为当地时间。从这里选择:
https://msdn.microsoft.com/en-us/library/windows/desktop/ms725473(v=vs.85).aspx
我会传递该日期的 Unix/Epoch 时间戳。我经常与 Stripe 合作,他们就是这样度过所有约会时间的。我根据这篇post改编了我的答案。
var myDate = new DateTime(2017, 5, 5);
int unixTimestamp = (int)(myDate.Subtract(new DateTime(1970, 1, 1))).TotalSeconds;
快速突触是认识到日期时间只是一个数字序列,这就是它的内部处理方式。当您想查看 DateTime 的值时,您很可能希望将其格式化为日期的文本表示形式。
因此,您应该返回,而不是返回 FechaConsulta 和 FechaArchivado
FechaConsulta.ToString("yyyy/MM/dd")
和 FechaArchivado.ToString("yyyy/MM/dd")
要相对快速地了解 DateTime 是什么以及如何使用它,请阅读我在有关 SQL Server 如何存储 DateTime、应用程序如何使用它以及如何更改显示格式的问题上发布的答案 Sql 保存格式不正确的日期
[路线(“api/[控制器]”)] [API控制器] 公共类 DateTimeController :ControllerBase { [http获取] 公共 IActionResult GetDateTime() { 日期时间 当前日期时间 = DateTime.Now; 返回确定(当前日期时间); } }