JavaScriptを使用して単純な日時形式に変換したいJsonタイムスタンプがあります。
次の形式の日付と時刻が必要です:dd-mm-yyyy hr:mn
以下は、タイムスタンプを抽出したい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"
}
]
}
日付はエポックからミリ秒で返されます。以下のコードは、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;
これが 動作するフィドル です。
Date
のプロトタイプを拡張して、次のようなフォーマット関数を含めます(または、独自の関数を検索または作成します)。
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);
};
次に、タイムスタンプを目的の形式に変換するために、dd-mm-yyyy hr:mn
(コメントで述べたように)、次のようにします。
var dateString = new Date(timestamp).format("dd-MM-yyyy hh:mm");
[編集]付随するパッド関数は次のとおりです。
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;
};
<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>