从字符串中获取日期和格式

时间:2017-07-01 19:07:11

标签: javascript string date format

我是javascript的新手,并尝试获取部分字符串并对其进行格式化。

我有一个字符串:

update_time="THU 2017-06-29 23:41:13 ET"

我希望将日期格式化为:06/29/2017

任何帮助将不胜感激

5 个答案:

答案 0 :(得分:1)

您在javascript中有str.substr(Begin, Length)方法。以下代码将为您提供正确的字符串部分。

update_time="THU 2017-06-29 23:41:13 ET"
new_format = update_time.substr(9,2) + '/' + update_time.substr(12,2) + '/' + update_time.substr(4,4)  

结果是var new_format,其字符串为06/29/2017

答案 1 :(得分:1)

You could use this regular expression. It detects anything formatted as yyyy-dd-mm and formats it as dd/mm/yyyy

new_time = update_time.replace(/.*(\d{4})-(\d{2})-(\d{2}).*/, "$2/$3/$1");

If you want to keep the original string in place, but just change the date, then remove the .* from both sides.

答案 2 :(得分:0)

最好使用空格split,然后使用第二个元素构建日期并使用toLocaleDateString()

new Date(update_time.split(' ')[1]).toLocaleDateString()

答案 3 :(得分:0)

function getDateFormat(data){
    if (!data) return null;
    let dateObj = new Date(parseInt(data));
    let date = dateObj.getDate();
    let month = dateObj.getMonth();
    let year = dateObj.getFullYear();
    let time = dateObj.getHours();
    let minutes = dateObj.getMinutes();
    let seconds = dateObj.getSeconds();
    if (time > 12){
        time = time - 12;
        time = time + ':' + minutes + ':' + seconds + ' PM';
    }else{
        time = time + ':' + minutes + ':' + seconds + ' AM';
    }
    date = date + ' - ' + month + ' - ' + year;
    return {
        date: date,
        time: time
    }
}

此功能在日期字符串中不起作用。

如果您有以毫秒为单位的日期,则可以使用我的方法正确获取日期和时间。

只需将毫秒传递给我的函数,它就会返回一个包含日期和时间的对象。

答案 4 :(得分:-1)

您可以使用默认JavaScript函数:

var update_time="THU 2017-06-29 23:41:13 ET"

更新:     正如RobG解释的那样,我们不能仅使用Date对象进行解析。所以我们可以使用正则表达式或拆分函数

var dateComponents = update_time.split(' ')[1].split('-');    //["2017", "06", "29"]
var formatedDate = `${dateComponents[1]}/${dateComponents[2]}/${dateComponents[0]}`;
console.log(formatedDate);

或者您可以选择使用momentJs library