Angular如何在JSON请求中以yyyy-MM-dd格式序列化Date

时间:2018-10-19 15:49:09

标签: json angular typescript angular-ui-bootstrap

我有一个对象,该对象的日期类型为'birthDate'。 在屏幕上,我应该以DD / MM / YYYY格式显示生日。现在,我使用引导程序bsDatePicker。 但是在数据库中,它以YYYY-MM-DD(类型字符串)的格式存储。因此,要提交修改,我应该将生日转换为这种格式。

您能告诉我如何在JSON请求中将Date(DD / MM / YYYY)序列化为YYYY-MM-DD格式吗?

您有什么好主意来优化转换而无需对数据库进行任何更改?

谢谢

3 个答案:

答案 0 :(得分:2)

首先,您将创建一个接受包含日期的字符串的函数。然后将其转换。在该函数的结尾,我有一些三进制代码,因为如果您不添加该部分,则日期可能是 2018-4-2 ,并且您希望它 > 2018-04-02

dateFormater(date:string):string{    
   const today = new Date(date);        
   const day = today.getDate()+1; 
   const month = today.getMonth()+1;
   const year = today.getFullYear();

   return year + "-" + (month<10 ? ("0" + month) : month)+ "-" + (day<10 ? ("0" + day) : day);    
 }

答案 1 :(得分:0)

如果它是字符串,则可以提取相关数据并返回正确的格式,这需要在json中提交。可能的辅助功能:

    formatDate():string{    
        const today = new Date();        

        const day = today.getDate(); 
        const month = today.getMonth()+1; // this will return 0-11 so you will need to add 1 to make it, 1-12
        const year = today.getFullYear();

        return year+"-"+month+"-"+day;    
    }

这将返回"2018-10-19"

答案 2 :(得分:0)

谢谢你的回答,这就是我所做的:

我将原始对象映射到带有日期的请求类型:

if(item[key] instanceof Date) {
  value = this.dataPipe.transform(item[key], 'yyyy-MM-dd').toString();
}else {
  value = item[key].toString();
}