Friday, May 17, 2024
 Popular · Latest · Hot · Upcoming
73
rated 0 times [  74] [ 1]  / answers: 1 / hits: 150272  / 13 Years ago, thu, march 31, 2011, 12:00:00

How to show yesterday's date in my textbox the yesterday's date and at the same time, the today's date in ?



I have this home.php where I show the date yesterday(user cannot modify this-readonly) and the date today(user MUST input the date today). And when tomorrow comes and the user visits the home .php s/he will saw the date inputted yesterday, and will input the date again for romorrow's.



E.G: Day1 (march 30, 2011)
Yesterday's date: March 29, 2011. (Not editable textbox)
Enter date today: (I'll type..) March 30, 2011.



Day 2 (march 31, 2011)
Yesterday's date: March 30, 2011. (Not editable textbox) Automatically, this will appear upon hitting the home.php
Enter date today: (I'll type..) March 31, 2011.



and so on..



I need a validation that wont accept wrong date format and the format must be: 01-Mar-11
How to do this? :(


More From » date

 Answers
58

Yesterday's date is simply today's date less one, so:



var d = new Date();
d.setDate(d.getDate() - 1);


If today is 1 April, then it is set to 0 April which is converted to 31 March.



Since you also wanted to do some other stuff, here are some functions to do it:



// Check if d is a valid date
// Must be format year-month name-date
// e.g. 2011-MAR-12 or 2011-March-6
// Capitalisation is not important
function validDate(d) {
var bits = d.split('-');
var t = stringToDate(d);
return t.getFullYear() == bits[0] &&
t.getDate() == bits[2];
}

// Convert string in format above to a date object
function stringToDate(s) {
var bits = s.split('-');
var monthNum = monthNameToNumber(bits[1]);
return new Date(bits[0], monthNum, bits[2]);
}

// Convert month names like mar or march to
// number, capitalisation not important
// Month number is calendar month - 1.
var monthNameToNumber = (function() {
var 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'
).split(' ');

return function(month) {
var i = monthNames.length;
month = month.toLowerCase();

while (i--) {
if (monthNames[i] == month) {
return i % 12;
}
}
}
}());

// Given a date in above format, return
// previous day as a date object
function getYesterday(d) {
d = stringToDate(d);
d.setDate(d.getDate() - 1)
return d;
}

// Given a date object, format
// per format above
var formatDate = (function() {
var months = 'jan feb mar apr may jun jul aug sep oct nov dec'.split(' ');
function addZ(n) {
return n<10? '0'+n : ''+n;
}
return function(d) {
return d.getFullYear() + '-' +
months[d.getMonth()] + '-' +
addZ(d.getDate());
}
}());

function doStuff(d) {

// Is it format year-month-date?
if (!validDate(d)) {
alert(d + ' is not a valid date');
return;
} else {
alert(d + ' is a valid date');
}
alert(
'Date in was: ' + d +
'nDay before: ' + formatDate(getYesterday(d))
);
}


doStuff('2011-feb-08');
// Shows 2011-feb-08 is a valid date
// Date in was: 2011-feb-08
// Day before: 2011-feb-07

[#92998] Tuesday, March 29, 2011, 13 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
tayla

Total Points: 681
Total Questions: 102
Total Answers: 108

Location: Marshall Islands
Member since Tue, Sep 21, 2021
3 Years ago
tayla questions
Fri, Mar 5, 21, 00:00, 3 Years ago
Wed, Oct 28, 20, 00:00, 4 Years ago
Thu, Apr 9, 20, 00:00, 4 Years ago
;