簡體   English   中英

如何使用angularJs過濾器從JSON解析日期字段

[英]How to parse date field from json using angularJs filter

這是我從json文件/Date(1435837792000+0000)/

我需要以以下格式顯示日期Oct 29, 2010 9:10:23 AM

Javascript中的Date原型沒有像format()這樣的函數。 但是有以下方法:

getDate() // Returns the date
getMonth() // Returns the month
getFullYear() // Returns the year
getHours() // Returns the hour
getMinutes() // Returns the minute
getSeconds() // Returns the second

您可以使用以下方式自己形成字符串:

function formatDate(dt) {
    var monthNames = ["January", "February", "March", "April",
        "May", "June", "July", "August", "September",
        "October", "November", "December"];

    var h = dt.getHours(), am;
    if (h > 12) {
        am = 'pm';
        h = h - 12;
    } else {
        am = 'am';
    }

    return monthNames[dt.getMonth()].substring(0, 3) + ' ' +
        dt.getDate() + ', ' + dt.getFullYear() + ' ' +
        h + ':' + dt.getMinutes() + ':' + dt.getSeconds() + ' ' +
        am;
}

console.log(formatDate(new Date(1435837792000+0000)));

如果您發現自己需要更多的日期解析和格式設置,請查看Momentjs庫。 現在,您可以執行以下操作:

moment(new Date(1435837792000+0000)).format("MMM D, YYYY hh:mm:ss A")

您可以從json中提取此值。

將其分配給控制器中的作用域變量。 yourCtrl.js

json = { name: 'stackoverflow',
         date: 1435837792000+0000
       };
$scope.today = new Date(json.date); //This converts the date value from the json to a healthy looking date something like this `2015-07-02T11:49:52.000Z`

today.html

{{ today | date:'medium' }}

此角度過濾器將以所需的日期格式顯示您的日期。 2010年10月29日,上午9:10:23

編輯:

$scope.today = Date(1435837792000+0000);
$scope.today = new Date($scope.today);

然后按照如下方式使用角度濾鏡對其進行管道傳輸

{{ today | date:'MMM d, y hh:mm:ss' }} {{ today | date:'MMM d, y hh:mm:ss' }}{{ today | date:'medium' }} {{ today | date:'medium' }}根據您的要求。

首先將時間戳從JSON轉換為Date變量,這是一個殘酷的match

var json = { "PublishDate": "\/Date(1435757849000+0000)\/" };
var timestamp = parseInt(json.PublishDate.match(/\d+/)[0],10);
var date = new Date(timestamp);

然后,古怪(尚未本地化)和可能不可靠的非標准的.toDateString().toLocaleTimeString()的混合可能會接近:

date = date.toDateString() + ' ' + date.toLocaleTimeString('en');
alert( date === 'Wed Jul 01 2015 3:37:29 PM' );

還有.toGMTString()返回Thu, 02 Jul 2015 11:49:52 GMT (RFC 1123)。

使用JS將其轉換為Date對象,然后將其轉換為date函數。

<html>
<head>
<script>
function jsonDatetoJSDate(){
    var dateFromServer = "/Date(1435837792000+0000)/";
    //Javascript conversion
    var prsdDt = new Date(parseInt(dateFromServer.substr(6)));
    //getting Date Object
    var uDate = new Date(prsdDt);
    alert(uDate);
}
</script>
</head>
<body onload="javascript:jsonDatetoJSDate()">
    Use Date Function on javaScript
</body>
</html>

正如您在評論中提到的,如果您獲取的JSON類似於

var obj = {
              "PublishDate": "\/Date(1435757849000+0000)\/"
          }

並且您無法控制該值(因為您將Date()括在斜杠中),那么您將需要

  • 逃避周圍的slashs Date

      obj.PublishDate.replace(/\\//g, ""); 
  • 並評估剩余的表達式

      eval(obj.PublishDate.replace(/\\//g, "")) 

獲取實際日期: Wed Jul 08 2015 11:48

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM