在角度 JS 中将字符串转换为子字符串

string to substring conversion in angular js

本文关键字:字符串 转换 JS      更新时间:2024-04-19
{"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"
        }
    ]
}

这就是我想要的结构,这个字符串"出发时间":"2016-04-12T16:30:00.000+01:00"变成这种格式"21 Apr 04:40"谁能帮我,我是 Angular JS 的新手,我想要一个过滤器,可以将我的字符串转换为我想要的结果。非常感谢

在你的范围内需要这个

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

并在带有过滤器的 HTML 中

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>

现在您可以使用过滤器

我建议你像edrian说的那样使用别人的代码(时刻.js真的很棒(。

但是,如果你想自己做这件事,在原生javascript中,你需要自己解析日期。您可以参考Mozilla的开发人员日期页面,您可以在其中找到有关如何使用该日期的信息。

我为你构建了一个小的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";
}
解析

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

如果要使用过滤器解析日期,可以安装角度矩模块。

然后,您可以在视图中执行以下操作(假设您已将"出发时间"值分配给$scope.date(:

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

希望对您有所帮助1

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');

您可以选择其角度版本。你可以看看角度时刻js。