JS date and Time Format

Hi

I am trying to change the format of below date:

Current format: Tue Feb 17 03:33:27 CST 2009

To

Expected format: yyyy-mm-dd:hh:mm

I have tried few Google pages for solution but not able to implement it.

Can any one help me to find the solution?

Thanks,

var now = new Date();

now.format(“m/dd/yy”);
// Returns, e.g., 6/09/07

// Can also be used as a standalone function
dateFormat(now, “dddd, mmmm dS, yyyy, h:MM:ss TT”);
// Saturday, June 9th, 2007, 5:46:21 PM

Hope this would be useful…
you can use for ur code.

How to test this code?
is this code gives the Expected format: yyyy-mm-dd:hh:mm ?
Where is dateFormat function?

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 && (typeof date == "string" || date instanceof 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 new 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 &gt; 99 ? Math.round(L / 10) : L),
			t:    H &lt; 12 ? "a"  : "p",
			tt:   H &lt; 12 ? "am" : "pm",
			T:    H &lt; 12 ? "A"  : "P",
			TT:   H &lt; 12 ? "AM" : "PM",
			Z:    utc ? "UTC" : (String(date).match(timezone) || [""]).pop().replace(timezoneClip, ""),
			o:    (o &gt; 0 ? "-" : "+") + pad(Math.floor(Math.abs(o) / 60) * 100 + Math.abs(o) % 60, 4),
			S:    ["th", "st", "nd", "rd"][d % 10 &gt; 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);
};

var now = new Date();

now.format(“m/dd/yy”);
// Returns, e.g., 6/09/07

// Can also be used as a standalone function
dateFormat(now, “dddd, mmmm dS, yyyy, h:MM:ss TT”);
// Saturday, June 9th, 2007, 5:46:21 PM

// You can use one of several named masks
now.format(“isoDateTime”);
// 2007-06-09T17:46:21

// …Or add your own
dateFormat.masks.hammerTime = ‘HH:MM! “Can\'t touch this!”’;
now.format(“hammerTime”);
// 17:46! Can’t touch this!

// When using the standalone dateFormat function,
// you can also provide the date as a string
dateFormat(“Jun 9 2007”, “fullDate”);
// Saturday, June 9, 2007

// Note that if you don’t include the mask argument,
// dateFormat.masks.default is used
now.format();
// Sat Jun 09 2007 17:46:21

// And if you don’t include the date argument,
// the current date and time is used
dateFormat();
// Sat Jun 09 2007 17:46:22

// You can also skip the date argument (as long as your mask doesn’t
// contain any numbers), in which case the current date/time is used
dateFormat(“longTime”);
// 5:46:22 PM EST

// And finally, you can convert local time to UTC time. Either pass in
// true as an additional argument (no argument skipping allowed in this case):
dateFormat(now, “longTime”, true);
now.format(“longTime”, true);
// Both lines return, e.g., 10:46:21 PM UTC

// …Or add the prefix “UTC:” to your mask.
now.format(“UTC:h:MM:ss TT Z”);
// 10:46:21 PM UTC

The following will convert the first formatted date into a best approximation of the second.


var date = 'Tue Feb 17 03:33:27 CST 2009';
date.replace(/\\w+ (\\w+) (\\d+) (\\d+):(\\d+):(\\d+) \\w+ (\\d+)/, '$1-$2:$3:$4');
// 2009-Feb-17:03:33

To take things further would involve using a library of some kind.
For example, Date Format Method allows you to specify the resulting date format by using common date format notations.

Thanks everyone for looking into it.

when i am trying to see the output of regular exp as below
document.write(date);
op/: Tue Feb 17 03:33:27 CST 2009

Am I missing anything???

any solutions for my issue?


<script type="text/javascript">

var date = 'Tue Feb 17 03:33:27 CST 2009';
var t= date.replace(/\\w+ (\\w+) (\\d+) (\\d+):(\\d+):(\\d+) \\w+ (\\d+)/, '$6-$1-$2:$3:$4');
// 2009-Feb-17:03:33

document.write(t);  // 2009-Feb-17:03:33

</script>

This code is working on Firefox and Konqueror.



<script type="text/javascript">
// yyyy-mm-dd:hh:mm

var date = 'Tue Feb 17 03:33:27 CST 2009';

var d= new Date(date);

var mm= ((d.getMonth()+1)>9)? (d.getMonth()+1):'0'+(d.getMonth()+1);

// alert(mm); // 02

var t= date.replace(/\\w+ \\w+ (\\d+) (\\d+):(\\d+):(\\d+) \\w+ (\\d+)/, '$5-'+mm+'-$1-$2:$3:$4');

alert(t);  // 2009-02-17:03:33:27

</script>

Thanks that works

Thanks everyone for efforts