Javascript 将日期字符串分离为JS对象

Javascript 将日期字符串分离为JS对象,javascript,jquery,json,date,Javascript,Jquery,Json,Date,我正在构建一个日历,它接受来自RSS提要的JS对象输入。这个RSS提要是从我公司内部使用的CMS自动生成的。我无法更改CMS端的任何内容,也无法更改返回的RSS源。我所能访问的只是从该提要构建的对象 RSS提要将开始日期、结束日期、时间和标题合并在一个字符串中。我需要在我的对象中将它们分割成键,以便我的日历可以显示它们 我遇到的问题是,RSS提要会根据事件在CMS中的设置方式对字符串进行不同的格式设置。例如: "7/15/2013 8:00 PM - 9:00 PM Blah" //Date,

我正在构建一个日历,它接受来自RSS提要的JS对象输入。这个RSS提要是从我公司内部使用的CMS自动生成的。我无法更改CMS端的任何内容,也无法更改返回的RSS源。我所能访问的只是从该提要构建的对象

RSS提要将开始日期、结束日期、时间和标题合并在一个字符串中。我需要在我的对象中将它们分割成键,以便我的日历可以显示它们

我遇到的问题是,RSS提要会根据事件在CMS中的设置方式对字符串进行不同的格式设置。例如:

"7/15/2013 8:00 PM - 9:00 PM Blah" //Date, Time, Title
"7/12/2013 Blue" //Date for all day event, Title
"7/6/2013 8:00 AM - 7/23/2013 9:00 AM Banana" //Long event - Start Date, Start Time, End Date, End Time, Title
正如您所看到的,这些是多么不同,我很难决定如何将它们解析到我的对象中。对象应如下所示:

{
    title: 'Banana',
    start: new Date(2013, 7, 24, 10, 30),
    end: new Date(2013, 7, 24, 11, 30),
    allDay: false
}
我的问题归结为:什么是最好的方法?使用regex,尝试使用
.indexOf(“/”)
之类的东西手动解析它,为每一个构建测试用例,或者其他一些建议


注:jQuery示例也是一个可以接受的答案。

您能够使用类似的库吗

您可能希望在“-”上开始拆分(带空格)。如果你有一个部分,你知道这是一个全天的活动,有一个标题。如果是两个部分,你知道这是一个开始/结束事件,第二部分有一个标题。解析标题后,可以使用Datejs创建日期对象:

Date.parse('7/15/2013 8:00 PM')

从这里开始,您应该有足够的资源来构建JSON对象。

根据Jon的回答,我的结论是:

parseEntries: function() {
    //Rename to fit plugin requirements
    for (var i = 0; i < Calendar.entries.length; i++) {
        var entry = Calendar.entries[i];

        //Rename
        entry["url"] = entry["link"];
        delete entry["link"];

        var position = entry.title.indexOf(' - ');

        if (position === -1) {
            //All day event
            entry.allDay = true;
            var space = entry.title.indexOf(" "),
                title = entry.title.substring(space + 1),
                firstHalf = entry.title.slice(0, space); //Start date, no time because it's all day event
        } else {
            var firstHalf = entry.title.slice(0, position), //Start date/time
                secondHalf = entry.title.substring(position + 3);

            if (secondHalf.indexOf("AM") !== -1) {
                var title = secondHalf.substring(secondHalf.indexOf("AM") + 3); //Title if has AM
            } else {
                var title = secondHalf.substring(secondHalf.indexOf("PM") + 3); //Title if has PM
            }

            secondHalf = secondHalf.slice(0, -(title.length + 1)); //End date/time
        }

        entry["start"] = firstHalf;
        entry["end"] = secondHalf;
        entry.title = title;
    };
parseEntries:function(){
//重命名以符合插件要求
对于(var i=0;i
那不是JSON,那只是一个Javascript对象。你是在问如何用Javascript解析这些日期吗?@nullability是的。我混淆了我同时在做的另一个项目。更新了这个问题。好主意,这正是我需要开始的。-2007年Datejs.Alpha-1的1个,126个开放问题,自2年以来没有开发008.如果你想要一个能做到这一点并得到维护的库,那就看看吧。谢谢你的输入。我从来没有说过Datejs是最好的,或者说我在所有JavaScript日期库上都是最新的。没问题。只是要确保你知道。Datejs是个好主意,但他们放弃了。