如何从javascript中的字符串中仅获取特定字符?

时间:2012-02-23 13:11:12

标签: javascript

我有一个日期字符串,如下所示:

  

2月21日(星期二)11:30 - 13:30

我想将输出更改为

  

... 02/21/2012

我试图在数组中保存一些像“Mon”,“Tue”等字样,并用“”替换它们。但它不起作用,我不知道如何正确地做到这一点。

请帮帮我。

4 个答案:

答案 0 :(得分:0)

这样的事情怎么样:

var str="Feb 21 (Tue) 11:30 - 13:30";

return str.subStr(4,2) + "/" + convertToNum(str.subStr(0,3)) + "/2012";

function convertToNum(monthName) {
  ... convert month name to number ...
}

请注意,上面的字符串中没有给出Year。

答案 1 :(得分:0)

尝试这样的事情。这将从字符串中删除时间,并将结果日期解析为日期对象:

var date = "Feb 21 (Tue) 11:30 - 13:30";
var newdate = date.replace(/ [0-9]{2}:[0-9]{2} - [0-9]{2}:[0-9]{2}/g, "");

var d = Date.parse(newdate);

var mydate = new Date(d);
document.write(mydate.getDate()+"/"+(mydate.getMonth()+1));

结束行显示了如何以dd/mm格式获取它。 (注意在javascript日期格式的月份从0开始,而不是1.即1月是0,2月是1 - 不要问,我不知道!哈哈......只记得+1)

答案 2 :(得分:0)

你可以像这样使用字符串操作:

function formatDateString(input){
    var m = /^(\w{3})\s(\d+).*$/.exec(input);
    return ({"Jan":"01","Feb":"02","Mar":"03","Apr":"04","May":"05","Jun":"06","Jul":"07","Aug":"08","Sep":"09","Oct":"10","Nov":"11","Dec":"12"})[m[1]] + "/" + m[2] + "/" + (new Date().getFullYear());
}

或者你可以重新格式化字符串并使用Date对象来解析它。

function formatDateString(input){
    var a = new Date(input.substr(0, 6) + " " + new Date().getFullYear());
    return ("0" + (a.getMonth()+1)).slice(-2) + "/" + ("0" + a.getDate()).slice(-2) + "/" + a.getFullYear();
}

答案 3 :(得分:0)

function convert(datestr, year){
    var split1 = datestr.split("(");
    var split2 = split1[1].split(")");
    var fulldate  = new Date(split1[0] + year);
    var date = fulldate.getDate();
    var month = fulldate.getMonth();
    return ((date < 10)?"0"+date:date) + "/" + ((month < 10)?"0"+month:month) +  split2[1];
}

var datestr = "Feb 21 (Tue) 11:30 - 13:30";
convert(datestr, 2012);