用于显示昨天的Javascript代码';s日期和今天日期

用于显示昨天的Javascript代码';s日期和今天日期,javascript,date,Javascript,Date,如何在我的文本框中显示昨天的日期,同时在文本框中显示今天的日期 我有一个home.php,其中显示了昨天的日期(用户无法修改此只读)和今天的日期(用户必须输入今天的日期)。当明天到来,用户访问home.php时,他/她将看到昨天输入的日期,并将再次输入romorrow的日期 例如:第1天(2011年3月30日) 昨日日期:2011年3月29日。(不可编辑的文本框) 输入今天的日期:(我将键入…)2011年3月30日 第二天(2011年3月31日) 昨日日期:2011年3月30日。(不可编辑的文本

如何在我的文本框中显示昨天的日期,同时在文本框中显示今天的日期

我有一个home.php,其中显示了昨天的日期(用户无法修改此只读)和今天的日期(用户必须输入今天的日期)。当明天到来,用户访问home.php时,他/她将看到昨天输入的日期,并将再次输入romorrow的日期

例如:第1天(2011年3月30日) 昨日日期:2011年3月29日。(不可编辑的文本框) 输入今天的日期:(我将键入…)2011年3月30日

第二天(2011年3月31日) 昨日日期:2011年3月30日。(不可编辑的文本框)在点击home.php时自动显示 输入今天的日期:(我将键入…)2011年3月31日

等等

我需要一个验证,不会接受错误的日期格式和格式必须是:01-Mar-11
怎么做(

昨天的日期只是今天的日期减去一天,因此:

var d = new Date();
d.setDate(d.getDate() - 1);
如果今天是4月1日,则设置为4月0日,转换为3月31日

因为您还想做一些其他的事情,这里有一些函数可以完成:

// 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
//检查d是否为有效日期
//格式必须为年-月-名称-日期
//例如2011年3月12日或2011年3月6日
//资本化并不重要
函数有效期(d){
变量位=d.split('-');
var t=stringToDate(d);
返回t.getFullYear()==位[0]&&
t、 getDate()==位[2];
}
//将上述格式的字符串转换为日期对象
函数stringToDate(s){
变量位=s.split('-');
var monthNum=monthNum(位[1]);
返回新日期(位[0],月,位[2]);
}
//将月份名称(如三月或三月)转换为
//数字、资本化并不重要
//月号为日历月-1。
var monthNameToNumber=(函数(){
var monthNames=(
“一月二月三月四月五月六月七月八月九月十月十一月十二月”+
“一月二月三月四月五月六月七月八月”+
“9月10月11月12日”
).分割(“”);
返回函数(月){
var i=月长;
month=month.toLowerCase();
而(我--){
if(月[i]==月){
返回i%12;
}
}
}
}());
//给定上述格式的日期,返回
//前一天作为日期对象
功能表(d){
d=弦状齿(d);
d、 setDate(d.getDate()-1)
返回d;
}
//给定日期对象、格式
//按上述格式
var formatDate=(函数(){
风险值月数=‘1-2-3-4-5-6-7-8-9-10-11-12’。拆分(“”);
函数addZ(n){
返回n一个班轮:

var yesterday = new Date(Date.now() - 864e5); // 864e5 == 86400000 == 24*60*60*1000

昨天的日期可以计算为:

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

昨天日期可计算为:-

let now = new Date();
    var defaultDate = now - 1000 * 60 * 60 * 24 * 1;
    defaultDate = new Date(defaultDate);

用javascript获取昨天的日期

您必须运行代码并检查其输出

var today=新日期();
var昨天=新日期(今天);
昨天.setDate(今天.getDate()-1);
console.log(“原始日期:”,昨天);
康斯特·蒙纳姆斯=[
“一月”、“二月”、“三月”、“四月”、“五月”、“六月”、“七月”、“八月”、“九月”、“十月”、“十一月”、“十二月”
];
var month=today.getMonth()+1
昨天=昨天.getDate()+“”+月[月]+“”+昨天.getFullYear()

console.log(“修改日期:,昨天);
如果用户只能输入今天的日期,为什么它是可编辑的?为什么你不自己把它放在那里?嗨,弗根,我输入今天的日期没有问题。我的问题是我无法获取昨天的日期:(可能值得使用
8640000
而不是每次都进行计算
24*60*60*1000
。应该是
86400000
@danielcorin你是对的。我只是希望答案清楚。我会更新答案。
24*60*60*1000=>86400000=>864e5
事实上,这种微优化的收益几乎没有ng在性能和可读性方面,我总是使用
24*60*60*1000
来代替。我也想用这个来获得明天。我添加了+而不是负数,但它在2020-12-31时很有趣-基本上,它不会在年底获得明天,但它每隔一天都有效。你知道为什么吗?