0

I get date from a JSON such as:

2013-11-26T11:36:32+0000

And I want as dd-MM-yyyy h: hh.mm, such as 26/11/2013 h: 11:36. So this is my code:

var dateParsed = new Date(Date.parse(feed.created_time));
console.log(dateParsed.toString('dd-MM-yyyy h: hh.mm'));

but it prints:

Tue Nov 26 2013 12:36:32 GMT+0100 (ora solare Europa occidentale)

Where am I wrong on this parsing?

5
  • I don't think anything is wrong with your parse. Its your toString automatically handling timezones. Commented Nov 26, 2013 at 14:17
  • So what should I do? :O Commented Nov 26, 2013 at 14:19
  • Use the date object you've created and it's various methods to output the date and time in your required format? Commented Nov 26, 2013 at 14:23
  • Such as? Can you give an example? Commented Nov 26, 2013 at 14:25
  • @markzzz I've added an example below Commented Nov 26, 2013 at 14:35

4 Answers 4

2

Something like this

function padDateTime(dt) { //Add a preceding zero to months and days < 10
    return dt < 10 ? "0"+dt : dt;
}

var dateParsed = new Date(Date.parse(feed.created_time));
var dd = padDateTime(dateParsed.getDate());
var mm = padDateTime(dateParsed.getMonth()+1);
var yyyy = dateParsed.getFullYear();
var hrs = padDateTime(dateParsed.getHours());
var mins = padDateTime(dateParsed.getMinutes());

var myDateTimeString = dd+"/"+mm+"/"+yyyy+" h: "+hrs+":"+mins;

Here is a fiddle

Sign up to request clarification or add additional context in comments.

Comments

1

There is nothing wrong with what javascript is parsing the date as. But specifically if you want date-time in your convenient format you can use dateformat.js library to format date and time.

Using the functions in the link, you can get desired results simply by following code:

console.log(dateParsed.format('dd/mm/yyyy ') + 'h: ' + dateParsed.format('hh:MM'));

Hope it helps...

Comments

1

Couple of useful functions I came across some time ago:

Usage

var dateParsed = new Date(Date.parse(feed.created_time));
var newdate = dateFormat(dateParsed, "dd-MM-yyyy h: hh.mm");

Functions

 * Date Format 1.2.3
 * (c) 2007-2009 Steven Levithan <stevenlevithan.com>
 * MIT license
 *
 * Includes enhancements by Scott Trenda <scott.trenda.net>
 * and Kris Kowal <cixar.com/~kris.kowal/>
 *
 * Accepts a date, a mask, or a date and a mask.
 * Returns a formatted version of the given date.
 * The date defaults to the current date/time.
 * The mask defaults to dateFormat.masks.default.
 */


var dateFormat = function () {
var token = /d{1,4}|m{1,4}|yy(?:yy)?|([HhMsTt])\1?|[LloSZ]|"[^"]*"|'[^']*'/g,
    timezone = /\b(?:[PMCEA][SDP]T|(?:Pacific|Mountain|Central|Eastern|Atlantic) (?:Standard|Daylight|Prevailing) Time|(?:GMT|UTC)(?:[-+]\d{4})?)\b/g,
    timezoneClip = /[^-+\dA-Z]/g,
    pad = function (val, len) {
        val = String(val);
        len = len || 2;
        while (val.length < len) val = "0" + val;
        return val;
    };

// Regexes and supporting functions are cached through closure
return function (date, mask, utc) {
    var dF = dateFormat;

    // You can't provide utc if you skip other args (use the "UTC:" mask prefix)
    if (arguments.length == 1 && Object.prototype.toString.call(date) == "[object String]" && !/\d/.test(date)) {
        mask = date;
        date = undefined;
    }

    // Passing date through Date applies Date.parse, if necessary
    date = date ? new Date(date) : new Date;
    if (isNaN(date)) throw SyntaxError("invalid date");

    mask = String(dF.masks[mask] || mask || dF.masks["default"]);

    // Allow setting the utc argument via the mask
    if (mask.slice(0, 4) == "UTC:") {
        mask = mask.slice(4);
        utc = true;
    }

    var _ = utc ? "getUTC" : "get",
        d = date[_ + "Date"](),
        D = date[_ + "Day"](),
        m = date[_ + "Month"](),
        y = date[_ + "FullYear"](),
        H = date[_ + "Hours"](),
        M = date[_ + "Minutes"](),
        s = date[_ + "Seconds"](),
        L = date[_ + "Milliseconds"](),
        o = utc ? 0 : date.getTimezoneOffset(),
        flags = {
            d:    d,
            dd:   pad(d),
            ddd:  dF.i18n.dayNames[D],
            dddd: dF.i18n.dayNames[D + 7],
            m:    m + 1,
            mm:   pad(m + 1),
            mmm:  dF.i18n.monthNames[m],
            mmmm: dF.i18n.monthNames[m + 12],
            yy:   String(y).slice(2),
            yyyy: y,
            h:    H % 12 || 12,
            hh:   pad(H % 12 || 12),
            H:    H,
            HH:   pad(H),
            M:    M,
            MM:   pad(M),
            s:    s,
            ss:   pad(s),
            l:    pad(L, 3),
            L:    pad(L > 99 ? Math.round(L / 10) : L),
            t:    H < 12 ? "a"  : "p",
            tt:   H < 12 ? "am" : "pm",
            T:    H < 12 ? "A"  : "P",
            TT:   H < 12 ? "AM" : "PM",
            Z:    utc ? "UTC" : (String(date).match(timezone) || [""]).pop().replace(timezoneClip, ""),
            o:    (o > 0 ? "-" : "+") + pad(Math.floor(Math.abs(o) / 60) * 100 + Math.abs(o) % 60, 4),
            S:    ["th", "st", "nd", "rd"][d % 10 > 3 ? 0 : (d % 100 - d % 10 != 10) * d % 10]
        };

    return mask.replace(token, function ($0) {
        return $0 in flags ? flags[$0] : $0.slice(1, $0.length - 1);
    });
};
}();

// Some common format strings
dateFormat.masks = {
"default":      "ddd mmm dd yyyy HH:MM:ss",
shortDate:      "m/d/yy",
mediumDate:     "mmm d, yyyy",
longDate:       "mmmm d, yyyy",
fullDate:       "dddd, mmmm d, yyyy",
shortTime:      "h:MM TT",
mediumTime:     "h:MM:ss TT",
longTime:       "h:MM:ss TT Z",
isoDate:        "yyyy-mm-dd",
isoTime:        "HH:MM:ss",
isoDateTime:    "yyyy-mm-dd'T'HH:MM:ss",
isoUtcDateTime: "UTC:yyyy-mm-dd'T'HH:MM:ss'Z'"
};

// Internationalization strings
dateFormat.i18n = {
dayNames: [
    "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat",
    "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"
],
monthNames: [
    "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec",
    "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"
]
};

// For convenience...
Date.prototype.format = function (mask, utc) {
return dateFormat(this, mask, utc);
};

Comments

0

JavaScript's toString doesn't let you pass in arguments for formatting. toString just prints exactly what you got. You can build the string yourself using getHours, getMonth, etc. Also, various libraries address this, such as moment.js.

If you are targeting very new versions of certain browser (Chrome and IE 11), Intl.DateTimeFormat is available as a built-in means of doing this. Eventually we'll get to a point where this is pretty standard, but we aren't there yet.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.