从具有特定格式的字符串中获取日期



>我有一个字符串的日期 - dtStr

var dtStr = "Thu May 28 02:13:16 BDT 2015";  

我想从dtStr中获取类似 - MM DD YYYY HH mm格式的日期。为了得到这个,我正在尝试将dtStr转换为Date,然后尝试使用这样的日期格式 -

var dtStr = "Thu May 28 02:13:16 BDT 2015";
today = new Date(dtStr);
alert( today.toLocalDateFormat("MM DD YYYY HH mm") );  

但这对我不起作用。任何人都可以帮助我 - 将dtStr转换为格式为 MM DD YYYY HH mm 的日期?

提前谢谢。

不幸的是,您尝试解析的字符串不会被 Date.parse() 接受,该方法将在您创建字符串时解析字符串。如果字符串始终采用该格式,则可以执行一些字符串操作并将其重新排列为Date()可以处理的 RFC2822/IETF 格式。

// this creates a proper Date object
new Date("Thu, May 28 2015 02:13:16 +0600");

或者,您可以使用其他构造函数之一创建新的 Date 对象,方法是自己拆分/解析字符串,并将它们插入构造函数中的正确位置。

此时,您将拥有一个 Date 对象,但您仍然需要从中获取值 - 唯一可以执行类似您尝试执行的操作的内置方法是 toLocaleFormat() ,这不是标准轨道(例如,在我的 Chrome 版本中不支持它(。因此,您需要独立获取值,并将它们连接在一起。

此时,直接解析字符串并完全跳过 Date 对象或使用像 datejs 这样的库可能更容易,它支持格式化输出字符串。

您可以尝试使用以下方法 -

function formatReview(date){
        /*****************************************************************
        * The method parameter 'date' is in the following format - 
        *          "Thu May 28 02:13:16 BDT 2015"
        * Javascript 'new Date()' has not suitable constructor to 
        * support this format. The parameter 'date' need to 
        * convert to fee the Date() constructor. 
        *******************************************************************/
        var monthSymbols = "JanFebMarAprMayJunJulAugSepOctNovDec";
        var elements = date.split(" ");
        var day = elements[0];
        var monthName = elements[1];
        var monthIndex = monthSymbols.indexOf(monthName)/3 +1;
        var date = elements[2];
        var year = elements[5];
        var timestamp = elements[3];
        var timestampElements = timestamp.split(":");
        var hour = timestampElements[0];
        var minutes = timestampElements[1];
        var dateString = monthIndex +"-"+ date +"-"+ year +" "+ hour +":"+ minutes;
        return dateString;
    }

试试这个

var todayDate=new Date("Thu May 29 2014 13:50:00");
  var format ="AM";
  var hour=todayDate.getHours();
  var min=todayDate.getMinutes();
  if(hour>11){format="PM";}
  if (hour   > 12) { hour = hour - 12; }
  if (hour   == 0) { hour = 12; }  
  if (min < 10){min = "0" + min;}
  document.write(todayDate.getMonth()+1 + " / " + todayDate.getDate() + " / " +  todayDate.getFullYear()+" "+hour+":"+min+" ");

小提琴:http://jsfiddle.net/e0ejguju/

相关内容

  • 没有找到相关文章