如何在JavaScript中将JSON日期格式化为dd/mm/yy格式?

11

我在响应中有一个json数据,格式为\/Date(1334514600000)\/,当我在javascript中进行转换时,得到的日期是Tue Apr 17 2012 11:37:10 GMT+0530 (India Standard Time), 但我需要的日期格式是17/04/2012。但我每次都失败了。请问有人能告诉我如何解决吗?


在 Stack Overflow 上已经有很多关于这个问题的答案了。 - row1
我检查了大部分的答案,但是没有一个对我有效 :-( - andy
1
可能是重复的问题:如何格式化JSON日期? - Jeremiah Willcock
8个回答

18

我认为其他发布的答案都不太正确,您已经接受了其中一个作为有效答案,所以我不会编辑它。

这是您接受的答案的更新版本。

var dateString = "\/Date(1334514600000)\/".substr(6);
var currentTime = new Date(parseInt(dateString ));
var month = currentTime.getMonth() + 1;
var day = currentTime.getDate();
var year = currentTime.getFullYear();
var date = day + "/" + month + "/" + year;
alert(date);

它使用了这个答案中的一种技巧来从JSON日期中提取epoch。


你也可以使用 var date = new Date(+dateString.match(/\d+/)[0]); 将时间转换为日期。但要小心,因为日期对象将在执行代码的系统时区中。 - RobG
感谢您的提问和回答! - Shane LeBlanc
这会给我2019年2月1日。如何获得02/01/2019? - KMR

回复KMR的问题

var dateString = "/Date(1334514600000)/".substr(6); var currentTime = new Date(parseInt(dateString)); var month = ("0" + (currentTime.getMonth() + 1)).slice(-2); var day = ("0" + currentTime.getDate()).slice(-2); var year = currentTime.getFullYear(); var date = year + '-' + month + '-' + day; alert(date);
- Surya R Praveen

1
我发现row1的答案非常有帮助,但是在输入类型为“date”的格式上卡住了,因为只返回小于10的十进制数的一个字符串,我能够修改使其适用于输入类型为“date”,我基本上是将代码从row1适应到链接http://venkatbaggu.com/convert-json-date-to-date-format-in-jquery/中的代码。
我通过jquery .val添加日期到输入框。
var dateString = "\/Date(1334514600000)\/".substr(6);
var currentTime = new Date(parseInt(dateString));
var month = ("0" + (currentTime.getMonth() + 1)).slice(-2);
var day = ("0" + currentTime.getDate()).slice(-2);
var year = currentTime.getFullYear();
var date = year + '-' + month + '-' + day;
alert(date);

1
这是您被接受的答案的更新版本。日期格式为DD/MM/YYYY,尝试这个...
var dateString = "/Date(1623781800000+0530)/"+.substr(6);
var currentTime = new Date(parseInt(dateString));
var month = currentTime.getMonth() + 1;
var day = currentTime.getDate();
var year = currentTime.getFullYear();
 if (month.toString().length == 1) 
   month = "0" + month.toString();
 if (day.toString().length == 1){ 
   day = "0" + currentTime.getDate();}                                       
var datenew = day + "/" + month + "/" + year;

0
//parse JSON formatted date to javascript date object
var bdate = new Date(parseInt(emp.Birthdate.substr(6)));

//format display date (e.g. 04/10/2012)
var displayDate = $.datepicker.formatDate("mm/dd/yy", bdate);

0
var currentTime = new Date()
var month = currentTime.getMonth() + 1
var day = currentTime.getDate()
var year = currentTime.getFullYear()
var date = day + "/" + month + "/" + year
alert(date);

我正在尝试这个,但它不起作用 <input type="hidden" value="\/Date(1334514600000)\/" />var currentTime = new Date($("input").val()); var month = currentTime.getMonth() + 1 var day = currentTime.getDate() var year = currentTime.getFullYear() var date = day + "/" + month + "/" + year alert(date); - andy

0

这是你问题的答案...

使用你的时间戳构建日期对象

var currentTime = new Date(1334514600000)
var month = currentTime.getMonth() + 1
var day = currentTime.getDate()
var year = currentTime.getFullYear()
var date = day + "/" + month + "/" + year
alert(date);​

它可以工作

http://jsfiddle.net/ChgUa/


你漏掉了一个步骤,需要将 \/Date(1334514600000)\/ 转换为 new Date(1334514600000) - row1

0

如果你正在使用Angular,格式化日期最简单的方法是使用管道。 点击这里

//in .ts file
ngOnInit() {
 this.currentDate = new Date()
}
//in html file
<p>Current date is:</p>{{currentDate | date: 'dd/MM/yyyy'}}

//Output: 22/04/2020

-1
 var Date = new Date(Tue Jun 15 2021 23:52:47 GMT+0800 (Malaysia Time)).toDateString(); console.log(Date);

结果 == 2021年6月15日星期二



这并没有回答提问者的问题。此外,语法无效,需要用引号将 Tue Jun 15... 包围起来。 - Nate Levin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接