如何使用angularJs过滤器从json解析日期字段

时间:2015-07-08 05:50:11

标签: javascript json angularjs

以下是我从json文件/Date(1435837792000+0000)/

获取的内容

我需要以下列格式Oct 29, 2010 9:10:23 AM

显示日期

5 个答案:

答案 0 :(得分:0)

在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")

答案 1 :(得分:0)

您可以从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:'medium' }}根据您的要求。

答案 2 :(得分:0)

首先从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)。

答案 3 :(得分:0)

使用JS将其转换为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>

答案 4 :(得分:0)

正如您在评论中提到的,如果您获得的JSON类似于

<div class="form-group" style="float:left">
                                    <asp:TextBox ID="txtAddress" runat="server" Width="227px" Height="81px"
                                        name="form-first-name" placeholder="Delivery Address..." class="form-first-name form-control" Text-Mode="MultiLine"></asp:TextBox>
                                    <asp:RequiredFieldValidator ID="RequiredFieldValidator7" runat="server" 
                                        ErrorMessage="Delivery Address is required." Display="Dynamic" ControlToValidate="txtAddress" 
                                        ForeColor="Red"></asp:RequiredFieldValidator>
                                    <asp:RegularExpressionValidator ID="RegularExpressionValidator10" runat="server" 
                                        ErrorMessage="Enter a valid Address" Display="Dynamic" ControlToValidate="txtAddress" 
                                        ForeColor="Red" 
                                        ValidationExpression="^[a-zA-Z# .0-9]+$"></asp:RegularExpressionValidator>
                                </div>

并且您无法控制更改值(因为您将Date()括在斜杠周围),那么您需要

  • 绕过var obj = { "PublishDate": "\/Date(1435757849000+0000)\/" } 周围的斜杠。

    Date
  • 并评估剩余的表达式

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

获取实际日期: eval(obj.PublishDate.replace(/\//g, ""))