角度js中的字符串到子字符串转换

时间:2016-04-11 14:49:21

标签: javascript angularjs string split substring

{"segments":    
    [
        {
            "Group":0,
            "Carrier":"TK",
            "FlightNumber":"###",
            "ChangeOfPlane":false,
            "OptionalServicesIndicator":false,
            "FlownSegment":false,
            "ScheduleChange":false,
            "Origin":"LHR",
            "Destination":"IST",
            "DepartureTime":"2016-04-12T16:30:00.000+01:00",
            "ArrivalTime":"2016-04-12T22:20:00.000+03:00"
        }
        {
            "Group":0,
            "Carrier":"TK",
            "FlightNumber":"118",
            "ChangeOfPlane":false,
            "OptionalServicesIndicator":false,
            "FlownSegment":false,
            "ScheduleChange":false,
            "Origin":"IST",
            "Destination":"KHI",
            "DepartureTime":"2016-04-13T00:10:00.000+03:00"
        }
    ]
}

这就是我想要的结构是这个字符串" DepartureTime":" 2016-04-12T16:30:00.000 + 01:00"这种格式" 21 Apr 04:40" 任何人都可以帮我这个我是角度js的新手,我想有一个过滤器,可以将我的字符串转换为我的欲望结果。 非常感谢

4 个答案:

答案 0 :(得分:1)

我建议您使用别人的代码,就像edrian所说的那样(moment.js真的太神奇了)。

但是,如果你想自己做这个,在原生的javascript中,你需要自己解析日期。您可以参考Mozilla's developer Date page,在那里您可以找到有关如何使用日期的信息。

我为你制作了一个小jsfiddle,它可以完全满足您的需求:https://jsfiddle.net/ruwqmd2u/

您可以看到我在创建日期日期后逐行解析整个代码,同时调用函数来处理月份名称:

var myDate = new Date("2016-04-12T16:30:00.000+01:00");

// Parse the date
var day = myDate.getDay();
var month = getMonthName(myDate.getMonth());
var hours = myDate.getHours();
var mins = myDate.getMinutes();

// Get a month name from number
function getMonthName(number) {
    if (number===1) return "Jan";
    if (number===2) return "Feb";
    if (number===3) return "Mar";
    if (number===4) return "Apr";
    if (number===5) return "May";
    if (number===6) return "Jun";
    if (number===7) return "Jul";
    if (number===8) return "Aug";
    if (number===9) return "Sep";
    if (number===10) return "Oct";
    if (number===11) return "Nov";
    if (number===12) return "Dec";
}

答案 1 :(得分:1)

你需要在你的范围内

var s = "2016-04-13T00:10:00.000+03:00"; //DepartureTime
$scope.v = {
    Dt: s
}

和你的html with filter

Angular: {{v.Dt | date:'dd MMMM HH:mm'}} <br />

已更新:根据您在评论中所写的内容解析您的json

在你的ctrl中

var m = yourJson; 
$scope.items = m.segments;
你的HTML中的

<li ng-repeat="i in items">{{i.DepartureTime}}</li>

现在您可以使用过滤器

答案 2 :(得分:0)

解析日期对象的最佳选择是使用moment.js

如果要使用过滤器解析日期,可以安装angular-moment模块。

然后你可以在你的视图中做这样的事情(假设你将DepartureTime值分配给$ scope.date):

<span>{{ date | amParse:'DD MMM HH:mm' }}</span>

希望有帮助1

答案 3 :(得分:0)

Moment.js是解析日期的一个非常好的选择。如果你想在你的项目中使用它,那么解决方案非常简单,如下所示:

moment(DepartureTime).format('DD MMM h:m');
e.g. moment('2016-04-12T16:30:00.000+01:00').format('DD MMM h:m');

您可以选择其角度版本。您可以查看angular-momentjs