Javascript 在javascript中将Json时间戳转换为正常的日期和时间
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/8947240/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Convert Json timestamp to normal date and time in javascript
提问by praneybehl
I have a Json timestamp that I would like to convert into simple date time format using javascript.
我有一个 Json 时间戳,我想使用 javascript 将其转换为简单的日期时间格式。
I need the date and time in the following format : dd-mm-yyyy hr:mn
我需要以下格式的日期和时间:dd-mm-yyyy hr:mn
Here is an example json date from i wish to extract the timestamp: "timestamp": 1326439500
这是我希望提取时间戳的示例 json 日期:“timestamp”:1326439500
{
"count": 2,
"d": [
{
"title": "Apple iPhone 4S Sale Cancelled in Beijing Amid Chaos (Design You Trust)",
"description": "Advertise here with BSA Apple cancelled its scheduled sale of iPhone 4S in one of its stores in China's capital Beijing on January 13. Crowds outside the store in the Sanlitun district were waiting on queues overnight. There were incidents of scuffle between shoppers and the store's security staff when shoppers, hundreds of them, were told that the sales [...]Source : Design You TrustExplore : iPhone, iPhone 4, Phone",
"link": "http://wik.io/info/US/309201303",
"timestamp": 1326439500,
"image": null,
"embed": null,
"language": null,
"user": null,
"user_image": null,
"user_link": null,
"user_id": null,
"geo": null,
"source": "wikio",
"favicon": "http://wikio.com/favicon.ico",
"type": "blogs",
"domain": "wik.io",
"id": "2388575404943858468"
},
{
"title": "Apple to halt sales of iPhone 4S in China (Fame Dubai Blog)",
"description": "SHANGHAI – Apple Inc said on Friday it will stop selling its latest iPhone in its retail stores in Beijing and Shanghai to ensure the safety of its customers and employees. Go to SourceSource : Fame Dubai BlogExplore : iPhone, iPhone 4, Phone",
"link": "http://wik.io/info/US/309198933",
"timestamp": 1326439320,
"image": null,
"embed": null,
"language": null,
"user": null,
"user_image": null,
"user_link": null,
"user_id": null,
"geo": null,
"source": "wikio",
"favicon": "http://wikio.com/favicon.ico",
"type": "blogs",
"domain": "wik.io",
"id": "16209851193593872066"
}
]
}
回答by James Hill
The date is being returned as milliseconds since epoch. The code below creates a JS date object:
日期以自纪元以来的毫秒数返回。下面的代码创建了一个 JS 日期对象:
var d = new Date(1245398693390);
var formattedDate = d.getDate() + "-" + (d.getMonth() + 1) + "-" + d.getFullYear();
var hours = (d.getHours() < 10) ? "0" + d.getHours() : d.getHours();
var minutes = (d.getMinutes() < 10) ? "0" + d.getMinutes() : d.getMinutes();
var formattedTime = hours + ":" + minutes;
formattedDate = formattedDate + " " + formattedTime;
Here's a working fiddle.
这是一个工作小提琴。
回答by canon
Extend Date
's prototype to include a format function like so (or find or create your own):
ExtendDate
的原型以包含像这样的格式函数(或查找或创建您自己的):
Date.prototype.format = function (formatString) {
// Returns a formatted date string
var month = this.getMonth() + 1,
day = this.getDate(),
year = this.getFullYear(),
hours24 = this.getHours(),
hours = (hours24 === 0 ? 12 : hours24 > 12 ? hours24 - 12 : hours24),
meridiem = hours24 >= 12 ? "PM" : "AM",
minutes = this.getMinutes(),
seconds = this.getSeconds();
return formatString.replace(/(MM)/g, month.padLeft(2, '0'))
.replace(/(M)/g, month)
.replace(/(dd)/g, day.padLeft(2, '0'))
.replace(/(d)/g, day)
.replace(/(yyyy)/ig, year)
.replace(/(yy)/ig, year.toString().substring(2, 4))
.replace(/(hh)/g, hours.padLeft(2, '0'))
.replace(/(h)/g, hours)
.replace(/(HH)/g, hours24.padLeft(2, '0'))
.replace(/(H)/g, hours24)
.replace(/(mm)/g, minutes.padLeft(2, '0'))
.replace(/(m)/g, minutes)
.replace(/(ss)/g, seconds.padLeft(2, '0'))
.replace(/(s)/g, seconds)
.replace(/(tt)/g, meridiem.toLowerCase())
.replace(/(TT)/g, meridiem);
};
Then, to convert the timestamp into the desired format, dd-mm-yyyy hr:mn
(as mentioned in your comment), you'd do the following:
然后,要将时间戳转换为所需的格式dd-mm-yyyy hr:mn
(如您的评论中所述),您需要执行以下操作:
var dateString = new Date(timestamp).format("dd-MM-yyyy hh:mm");
[Edit]Here's the accompanying pad function:
[编辑]这是随附的打击垫功能:
Number.prototype.padLeft = function (width, padChar) {
// Returns a padded string
padChar = padChar || ' ';
var value = this.toString();
while (value.length < width) {
value = padChar + value;
}
return value;
};
回答by Rajat Singhal
<script>
var timestamp=1326439320;
var date=new Date(timestamp);
var hours = date.getHours(); // minutes part from the timestamp
var minutes = date.getMinutes(); // seconds part from the timestamp
var seconds = date.getSeconds(); // will display time in 10:30:23 format
var formattedTime = hours + ':' + minutes + ':' + seconds;
alert(formattedTime);
</script>