![]() |
Javascript and working with dates
I need to write some javascript that will return a date string in the
form mm/dd/yyyy. The date needs to be today's date - 30 days. Is there a relatively straight forward way to do this? So far all I can find is a mess of variables for month, day, and year, and combining some date functions together, etc etc. Seems like a lot of work for what should be very simple. |
Re: Javascript and working with dates
rhaazy a écrit :
> I need to write some javascript that will return a date string in the > form mm/dd/yyyy. > > The date needs to be today's date - 30 days. > > Is there a relatively straight forward way to do this? http://www.merlyn.demon.co.uk/js-date1.htm#incr > So far all I can find is a mess of variables for month, day, and year, > and combining some date functions together, etc etc. Seems like a lot > of work for what should be very simple. and what do you think we have to do when we want the date in french ? dd/mm/yyyy var D = new Date(); D.setMonth(D.getMonth()-1) alert( D.getDate()+'/'+(+D.getMonth()+1)+'/'+D.getFullYear() ); --> 19/8/2008 -- sm |
Re: Javascript and working with dates
On Sep 19, 3:04*pm, SAM <stephanemoriaux.NoAd...@wanadoo.fr.invalid>
wrote: > rhaazy a écrit : > > > I need to write some javascript that will return a date string in the > > form mm/dd/yyyy. > > > The date needs to be today's date - 30 days. > > > Is there a relatively straight forward way to do this? > > http://www.merlyn.demon.co.uk/js-date1.htm#incr > > > So far all I can find is a mess of variables for month, day, and year, > > and combining some date functions together, etc etc. *Seems like a lot > > of work for what should be very simple. > > and what do you think we have to do when we want the date in french ? > * dd/mm/yyyy > > var D = new Date(); > D.setMonth(D.getMonth()-1) > alert( D.getDate()+'/'+(+D.getMonth()+1)+'/'+D.getFullYear() ); > > * --> 19/8/2008 > > -- > sm Thats fine if all I want is a date, but to be able to subtract 30 days from any given date introduces a huge mess of logic that needs to be coded. I decided to just find an open source date library that had decent parsing functions for my purpose. Thanks for the post. |
Re: Javascript and working with dates
rhaazy <rhaazy@gmail.com> writes:
> On Sep 19, 3:04Â*pm, SAM <stephanemoriaux.NoAd...@wanadoo.fr.invalid> > wrote: > Thats fine if all I want is a date, but to be able to subtract 30 days > from any given date introduces a huge mess of logic that needs to be > coded. That's because dates - and times - are VERY messy. A library able to manipulate dates that is complete enough to be /globally/ useful would be very large. See for example the amount of stuff in the perl DateTime project: http://datetime.perl.org/?Modules > I decided to just find an open source date library that had decent > parsing functions for my purpose. If you can find a decent library, that's probably the best way to handle this problem. -- Joost Diepenmaat | blog: http://joost.zeekat.nl/ | work: http://zeekat.nl/ |
Re: Javascript and working with dates
rhaazy wrote:
> On Sep 19, 3:04 pm, SAM <stephanemoriaux.NoAd...@wanadoo.fr.invalid> > wrote: >> var D = new Date(); >> D.setMonth(D.getMonth()-1) >> alert( D.getDate()+'/'+(+D.getMonth()+1)+'/'+D.getFullYear() ); >> --> 19/8/2008 > Thats fine if all I want is a date, but to be able to subtract 30 days > from any given date introduces a huge mess of logic that needs to be > coded. I can't recall any language that makes dealing with dates easy. |
Re: Javascript and working with dates
rhaazy <rhaazy@gmail.com> writes:
> I need to write some javascript that will return a date string in the > form mm/dd/yyyy. > > The date needs to be today's date - 30 days. > > Is there a relatively straight forward way to do this? var date = new Date(); date.setDate(date.getDate()-30); var day = date.getDate(); var mth = date.getMonth(); var yr = date.getFullYear(); var format = (day < 10 ? "0" : "") + day + "/" + (mth < 10 ? "0" : "") + mth + "/" + yr; > So far all I can find is a mess of variables for month, day, and year, > and combining some date functions together, etc etc. Seems like a lot > of work for what should be very simple. There isn't a date formatter built in. For most cases, it's not worth it anyway. Just make one function to format your dates as you want it and use that wherever it's needed. /L -- Lasse Reichstein Nielsen DHTML Death Colors: <URL:http://www.infimum.dk/HTML/rasterTriangleDOM.html> 'Faith without judgement merely degrades the spirit divine.' |
Re: Javascript and working with dates
rhaazy a écrit :
> On Sep 19, 3:04 pm, SAM <stephanemoriaux.NoAd...@wanadoo.fr.invalid> > wrote: >> rhaazy a écrit : >> >>> I need to write some javascript that will return a date string in the >>> form mm/dd/yyyy. >>> The date needs to be today's date - 30 days. >> >> var D = new Date(); >> D.setMonth(D.getMonth()-1) >> alert( D.getDate()+'/'+(+D.getMonth()+1)+'/'+D.getFullYear() ); >> >> --> 19/8/2008 > > Thats fine if all I want is a date, don't you want date ? ("mm/dd/yyyy" you did say) > but to be able to subtract 30 days and *absoloutly* 30 days ? > from any given date introduces a huge mess of logic that needs to be > coded. Example with a trap over February: ================================== var y = 2005, m = 03, d = 30; // 30/03/2005 (in dd/mm/yyyy) var D = new Date(y, +m-1, d); // the orginal JS date D.setDate(D.getDate()-30); // 30 days less // that is done alert( d+'/'+m+'/'+y+ ' = original date\n'+ D.getDate()+'/'+(+D.getMonth()+1)+'/'+D.getFullYear()+ ' = date - 30 days'): -- sm |
Re: Javascript and working with dates
Lasse Reichstein Nielsen a écrit :
> rhaazy <rhaazy@gmail.com> writes: >> >> The date needs to be today's date - 30 days. >> >> Is there a relatively straight forward way to do this? > > var date = new Date(); > date.setDate(date.getDate()-30); > var day = date.getDate(); > var mth = date.getMonth(); months begin by '0' in JS. No ? so : var mth = +date.getMonth()+1; > var yr = date.getFullYear(); > var format = (day < 10 ? "0" : "") + day + "/" + > (mth < 10 ? "0" : "") + mth + "/" + > yr; |
Re: Javascript and working with dates
On Sep 20, 6:24*am, Conrad Lender <crlen...@yahoo.com> wrote:
> Usage: > * * var d = new Date(2008, 3, 4); > * * var dstr1 = d.fmt("%m/%d/%Y"); > * * var dstr2 = d.fmt("%d.%m.%Y"); > > /* a simple date formatting method */ > Date.prototype.fmt = function (format) { > * * var buffer = ""; > * * var chr, nxt; > * * for (var i = 0, len = format.length; i < len; ++i) { > * * * * chr = format.substr(i, 1); > * * * * if (chr != "%") { > * * * * * * buffer += chr; > * * * * * * continue; > * * * * } > * * * * nxt = format.substr(i + 1, 1); > * * * * if (nxt == "C") { * * * * * // 2-digit century (eg "19" or "20") > * * * * * * buffer += String(Math.floor( * /* this shouldbe one line */ > * * * * * * * * this.getFullYear() / 100)).padFront("0", 2); > * * * * } else if (nxt == "d") { * *// day of month (01 to 31) > * * * * * * buffer += String(this.getDate()).padFront("0", 2); > * * * * } else if (nxt == "F") { * *// month of year (1 to 12) > * * * * * * buffer += (this.getMonth() + 1); > * * * * } else if (nxt == "f") { * *// day of month (1 to31) > * * * * * * buffer += this.getDate(); > * * * * } else if (nxt == "H") { * *// 24h hours (00 - 23) > * * * * * * buffer += String(this.getHours()).padFront("0",2); > * * * * } else if (nxt == "M") { * *// minutes (00 - 59) > * * * * * * buffer += String(this.getMinutes()).padFront("0", 2); > * * * * } else if (nxt == "m") { * *// month of year (01 to 12) > * * * * * * buffer += String(this.getMonth() + 1).padFront("0", 2); > * * * * } else if (nxt == "n") { * *// newline > * * * * * * buffer += "\n"; > * * * * } else if (nxt == "R") { * *// 24h time (%H:%M) > * * * * * * buffer += String(this.getHours()).padFront("0",2) > * * * * * * * * * * + ":" > * * * * * * * * * * + String(this.getMinutes()).padFront("0", 2); > * * * * } else if (nxt == "S") { * *// seconds (00 - 59) > * * * * * * buffer += String(this.getSeconds()).padFront("0", 2); > * * * * } else if (nxt == "T") { * *// 24h time (%H:%M:%S) > * * * * * * buffer += String(this.getHours()).padFront("0",2) > * * * * * * * * * * + ":" > * * * * * * * * * * + String(this.getMinutes()).padFront("0", 2) > * * * * * * * * * * + ":" > * * * * * * * * * * + String(this.getSeconds()).padFront("0", 2); > * * * * } else if (nxt == "Y") { * *// 4-digit year > * * * * * * buffer += this.getFullYear(); > * * * * } else if (nxt == "y") { * *// 2-digit year > * * * * * * var y = String(this.getFullYear()); > * * * * * * buffer += y.substr(y.length -2, 2); > * * * * } else if (nxt == "%") { * *// literal "%" character > * * * * * * buffer += "%"; > * * * * } else { > * * * * * * buffer += format.substr(i, 2); > * * * * } > * * * * ++i; // skip next > * * } > * * return buffer; > > } > > In this form, it also requires an extension to the String prototype object: > > /* left-pads the string with {chr} until it is {len} characters long */ > String.prototype.padFront = function (chr, len) { > * * if (this.length >= len) { > * * * * return this; > * * } else { > * * * * return chr.repeat(len - this.length) + this; > * * } > > } > > /* returns the string repeated {n} times */ > String.prototype.repeat = function (n) { > * * if (n < 1) return ""; > * * return (new Array(n + 1)).join(this); > > } Nice and compact implementation, 5 stars! A improvement here might be using Array as buffer instead of String since Strings in Javascript are immutable thereby preventing temporary string object creation. /sasuke |
Re: Javascript and working with dates
sasuke wrote:
> On Sep 20, 6:24 am, Conrad Lender <crlen...@yahoo.com> wrote: >> Usage: >> var d = new Date(2008, 3, 4); >> var dstr1 = d.fmt("%m/%d/%Y"); >> var dstr2 = d.fmt("%d.%m.%Y"); >> >> /* a simple date formatting method */ >> Date.prototype.fmt = function (format) { >> [50 lines of code] >> } >> >> In this form, it also requires an extension to the String prototype object: >> >> /* left-pads the string with {chr} until it is {len} characters long */ >> String.prototype.padFront = function (chr, len) { >> if (this.length >= len) { >> return this; >> } else { >> return chr.repeat(len - this.length) + this; >> } >> >> } >> >> /* returns the string repeated {n} times */ >> String.prototype.repeat = function (n) { >> if (n < 1) return ""; >> return (new Array(n + 1)).join(this); >> >> } > > Nice and compact implementation, 5 stars! Compact? Maybe String.prototype.padFront() and String.prototype.repeat(). > A improvement here might be using Array as buffer instead of String Or no user-defined buffer at all. > since Strings in Javascript are immutable thereby preventing temporary > string object creation. Non sequitur. PointedEars -- Prototype.js was written by people who don't know javascript for people who don't know javascript. People who don't know javascript are not the best source of advice on designing systems that use javascript. -- Richard Cornford, cljs, <f806at$ail$1$8300dec7@news.demon.co.uk> |
| All times are GMT. The time now is 05:11 PM. |
Powered by vBulletin®. Copyright ©2000 - 2013, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.