2017-05-05 51 views
1

返回日期时间,我有以下的实体,而2个datetimefields ..如何正确地在WEB API从数据库

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)/", 

回答

0

我会传递一个Unix/Epoch时间戳的日期。我使用Stripe很多,这就是他们如何通过所有日期。我从这个post调整了我的答案。

 var myDate = new DateTime(2017, 5, 5); 
     int unixTimestamp = (int)(myDate.Subtract(new DateTime(1970, 1, 1))).TotalSeconds; 
+0

˚F她返回日期时间,为什么它返回一个整数API响应?她的问题是如何使它真的返回DateTime字符串,类似22-02-2017,而不是该整数。 –

+0

他们得到的日期已经是具有时间偏移的Epoch值,他们需要的是如何以“人类”格式读取它 –

1

只需要使用内置的时间函数将时间转换为当地时间。你选,从这里开始:

https://msdn.microsoft.com/en-us/library/windows/desktop/ms725473(v=vs.85).aspx

+0

如果她正在返回Datetime,为什么在AP?响应中返回一个整数?她的问题是如何使它真的返回DateTime字符串,类似22-02-2017,而不是该整数。 –

+1

这不是固定时间的问题,而是显示它的问题。 –

+0

它显示可通过Web API发送的格式。它是一种标准格式,称为“机器时间”。其从1970年1月1日开始的秒数。 如果用户希望API发送不同的时间,那么他们将不得不重新编程API的代码。否则,您必须将发送的时间转换为可读的时间格式。 –

0

快速突触是要认识到一个DateTime仅仅是一个数字序列,这就是它是如何内部处理。当你想看到DateTime的值时,你很可能想要将其格式化为日期的文本表示。

因此而不是返回FechaConsulta和FechaArchivado,你应该返回 FechaConsulta.ToString("yyyy/MM/dd")FechaArchivado.ToString("yyyy/MM/dd")

有关什么日期时间,以及如何使用它相对快速阅读,请阅读我张贴在一个关于问题的答案SQL Server如何存储日期时间,应用程序如何处理它,以及如何改变显示格式 Sql saving date with incorrect format

相关问题