Date.parse(2/4/2011 9:34:48 AM)

my input will be from a variable (Ticket.CreationDate) and will look like

2/4/2011 9:34:48 AM (it will vary of course)

Ideally I could pass in the variable as-is and get the different results
like
unknownDateFunc(Ticket.DateCreation) \ Outputs= Friday, February 4, 2011
unknownTimeFunc(Ticket.DateCreation) \ Outputs= 9:34 AM

Meddling with Date.parse() and .toDateString()
and I just can’t figure it out.

Resolved : using Steve Levithan Method

var datevar = dateFormat(TicketList.Tickets[Ticket].CreationDate.split(" ", 1), "fullDate"); 
// without .split(" ",1) it displayed as "Thu, Feb 24, 2011 00:00" I don't know why
var timevar = dateFormat(TicketList.Tickets[Ticket].CreationDate, "shortTime");

3 thoughts on “Date.parse(2/4/2011 9:34:48 AM)”

  1. I would suggest a combination of 2 different Date libraries I am aware of.

    The first, for parsing the date from a string, is DateJS. You can find it at http://www.datejs.com/. Your example parses with their library fine (once you include appropriate quote marks)

    // Results in Date object whose toString is:  
    //    Fri Feb 04 2011 09:34:48 GMT-0600 (Central Standard Time)
    Date.parse('2/4/2011 9:34:48 AM')
    

    The other library is for creating nicely formatted string values based on your date object. This can be found at http://blog.stevenlevithan.com/archives/date-time-format. For example, from that page:

    // Saturday, June 9th, 2007, 5:46:21 PM
    var now = new Date();
    dateFormat(now, "dddd, mmmm dS, yyyy, h:MM:ss TT");
    
    Reply
  2. The fact that you have a static format makes a solution simple.

    var dateReg = 
        /(\d{1,2})\/(\d{1,2})\/(\d{4})\s*(\d{1,2}):(\d{2}):(\d{2})\s*(AM|PM)/;
    function parseDate(input) {
        var year, month, day, hour, minute, second,
            result = dateReg.exec(input);
        if (result) {
            year = +result[3];
            month = +result[1]-1; //added -1 to correct for the zero-based months
            day = +result[2];
            hour = +result[4];
            minute = +result[5];
            second = +result[6];
            if (result[7] === 'PM' && hour !== 12) {
                hour += 12;
            }       
        }
        return new Date(year, month, day, hour, minute, second);
    }
    
    Reply
  3. Create a function which takes date and in-format string and out-format string as parameter

    string FormatDate(string date, string informat,string outformat)
    {
        var culture = CultureInfo.CreateSpecificCulture("en-US");
        return DateTime.ParseExact(date, informat, culture).ToString(outformat);
    }
    
    FormatDate("2/4/2011 9:34:48 AM","M/d/yyyy H:m:s tt","H:m:s")               //9:34:48
    

    You can get different format string from here

    Reply

Leave a Comment