Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/418.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 检查日期是今天、昨天还是过去7天_Javascript_Date_Time - Fatal编程技术网

Javascript 检查日期是今天、昨天还是过去7天

Javascript 检查日期是今天、昨天还是过去7天,javascript,date,time,Javascript,Date,Time,我知道这个帖子: 但我只是在寻找一个JavaScript解决方案。如果可能的话,一个短的。我真的想不出一个100%可靠的方法 到目前为止,我是这样做的: function FormatDate(someDtUTC) { var someDt = new Date(someDtUTC.getTime() + someDtUTC.getTimezoneOffset() * 60 * 1000); var dtNow = new Date(); if (dtNow.getUTC

我知道这个帖子:
但我只是在寻找一个JavaScript解决方案。如果可能的话,一个短的。我真的想不出一个100%可靠的方法

到目前为止,我是这样做的:

function FormatDate(someDtUTC) {
    var someDt = new Date(someDtUTC.getTime() + someDtUTC.getTimezoneOffset() * 60 * 1000);
    var dtNow = new Date();
    if (dtNow.getUTCFullYear() == someDt.getUTCFullYear() && dtNow.getUTCMonth() == someDt.getUTCMonth()) {
        if (dtNow.getUTCDate() == someDt.getUTCDate())
            var dateString = "Today, " + Ext.Date.format(someDt, 'G:i'); // Today, 15:32
        else if (dtNow.getUTCDate() - 1 == someDt.getUTCDate())
            var dateString = "Yesterday, " + Ext.Date.format(someDt, 'G:i'); //Yesterday, 13:26
        else if (dtNow.getUTCDate() - someDt.getUTCDate() < 7)
            var dateString = Ext.Date.format(someDt, 'l, G:i'); //Sunday, 14:03
    } else
        var dateString = Ext.Date.format(someDt, 'j.n.y\, G:i'); //7.8.15, 8:25
    return dateString;
}
知道我如何告诉函数也处理这个问题吗?

我不是在寻找一个带有外部库(包括ExtJS)的解决方案。我想用原始JavaScript解决这个问题。

好的,我们可以通过以下步骤完成:

  • 获取两个日期'
    Date()
    对象
  • 使用
    .setTime()
    将两者的时间设置为特定时间
  • 使用
    .getTime()
    ,计算毫秒
  • 计算两个日期的时间
  • 检查以下情况:
  • 如果差值为86400000,则为昨天
  • 如果差值是86400000的倍数,则为天数
  • JavaScript代码

    var a = new Date(2015, 8 - 1, 25);  // Today
    var b = new Date(2015, 8 - 1, 24);  // Yesterday
    var c = new Date();                 // Now
    
    c.setHours(0);
    c.setMinutes(0);
    c.setSeconds(0, 0);
    
    if (a.getTime() == c.getTime())
      return "Today";
    else if (b.getTime() == c.getTime())
      return "Yesterday";
    else if ((new Date(2015, 8 - 1, 25 - 7)).getTime() < c.getTime())
      return "Less than a week";
    
    var a=新日期(2015年8月1日至25日);//今天
    var b=新日期(2015年8月1日至24日);//昨天
    var c=新日期();//现在
    c、 设定时间(0);
    c、 设置分钟(0);
    c、 设置秒(0,0);
    如果(a.getTime()==c.getTime())
    返回“今天”;
    else if(b.getTime()==c.getTime())
    返回“昨天”;
    else if((新日期(2015年8-1月25-7日)).getTime()
    您可以使用两个日期之间的日期差,如果有负值,它将返回以天为单位的差,然后像

    var date1 = new Date("12/15/2010");
    var date2 = new Date("12/14/2010");
    var timeDiff = date2.getTime() - date1.getTime();
    var diffDays = Math.ceil(timeDiff / (1000 * 3600 * 24)); 
    if(diffDays == -1){ alert("Yesterday")}
    

    如果要打印今天、昨天、星期几,如果是当前年份,则显示不带年份的日期,如果是上一年,则显示带年份的日期,下面的代码将帮助您

    var fulldays = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
    var months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
    
    
    function formatDate(someDateTimeStamp) {
        var dt = new Date(someDateTimeStamp),
            date = dt.getDate(),
            month = months[dt.getMonth()],
            timeDiff = someDateTimeStamp - Date.now(),
            diffDays = new Date().getDate() - date,
            diffMonths = new Date().getMonth() - dt.getMonth(),
            diffYears = new Date().getFullYear() - dt.getFullYear();
    
        if(diffYears === 0 && diffDays === 0 && diffMonths === 0){
          return "Today";
        }else if(diffYears === 0 && diffDays === 1) {
          return "Yesterday";
        }else if(diffYears === 0 && diffDays === -1) {
          return "Tomorrow";
        }else if(diffYears === 0 && (diffDays < -1 && diffDays > -7)) {
          return fulldays[dt.getDay()];
        }else if(diffYears >= 1){
          return month + " " + date + ", " + new Date(someDateTimeStamp).getFullYear();
          }else {
            return month + " " + date;
          }
    }
    
    formatDate(Date.now()) //"Today"
    formatDate(Date.now() - 86400000) // "Yesterday"
    formatDate(Date.now() - 172800000) // it will return the name of the week if it is beyond two days
    
    var fulldays=[“周日”、“周一”、“周二”、“周三”、“周四”、“周五”、“周六”];
    风险值月份=[“一月”、“二月”、“三月”、“四月”、“五月”、“六月”、“七月”、“八月”、“九月”、“十月”、“十一月”、“十二月”];
    函数formatDate(someDateTimeStamp){
    var dt=新日期(someDateTimeStamp),
    日期=dt.getDate(),
    月=月[dt.getMonth()],
    timeDiff=someDateTimeStamp-Date.now(),
    diffDays=新日期().getDate()-日期,
    diffMonths=新日期().getMonth()-dt.getMonth(),
    diffYears=新日期().getFullYear()-dt.getFullYear();
    如果(diffYears==0&&diffDays==0&&diffMonths==0){
    返回“今天”;
    }else if(diffYears==0&&diffDays==1){
    返回“昨天”;
    }else if(diffYears===0&&diffDays===1){
    返回“明天”;
    }否则如果(diffYears===0&(diffDays<-1&&diffDays>-7)){
    返回全天[dt.getDay()];
    }否则如果(diffYears>=1){
    返回月份+“”+日期+“”,“+新日期(someDateTimeStamp)。getFullYear();
    }否则{
    返回月份+“”+日期;
    }
    }
    formatDate(Date.now())/“今天”
    formatDate(Date.now()-86400000)/“昨天”
    formatDate(Date.now()-17280000)//如果超过两天,则返回周的名称
    
  • 你为什么不试试这样的
  • 您也可以在7天前执行此操作:

    export function isToday(date, now) {
      const yearDate = date.getYear();
      const monthDate = date.getMonth();
      const dayDate = date.getDate();
      const yearNow = now.getYear();
      const monthNow = now.getMonth();
      const dayNow = now.getDate();
      if (yearDate === yearNow && monthDate === monthNow && dayDate === 
        dayNow) {
        return true
      }
      return false
    }
    

  • 您可以使用此函数并将日期作为参数传递,它将返回星期几,7天后将返回给定日期

    函数findDay(日期){
    让dateToCheck=新日期(日期);
    const today=新日期();
    const昨天=新日期(今天);
    const onedaybeforeaday=新日期(昨天);
    const twodaybeforeaday=新日期(昨天);
    const三天前=新日期(昨天);
    const fourdaybeforeaday=新日期(昨天);
    const fivedaybeforeaday=新日期(昨天);
    昨日.setDate(昨日.getDate()-1);
    setDate(昨日.getDate()-1);
    setDate(昨日.getDate()-2);
    setDate(昨日.getDate()-3);
    setDate(昨日.getDate()-4);
    FiveDayBeforeDayed.setDate(昨日.getDate()-5);
    让天数=[
    “星期日”,
    “星期一”,
    “星期二”,
    “星期三”,
    “星期四”,
    “星期五”,
    “星期六”,
    ];
    如果(dateToCheck.toDateString()==Todate.toDateString()){
    返回“今天”;
    }else if(dateToCheck.toDateString()==昨天。toDateString()){
    返回“昨天”;
    }else if(dateToCheck.toDateString()==昨天的前一天。toDateString()){
    返回天数[date.getDay()];
    }else if(dateToCheck.toDateString()==TwoDayBeforEarty.toDateString()){
    返回天数[date.getDay()];
    }else if(dateToCheck.toDateString()==昨天三天前。toDateString()){
    返回天数[date.getDay()];
    }else if(dateToCheck.toDateString()==FourDayBeforEarty.toDateString()){
    返回天数[date.getDay()];
    }else if(dateToCheck.toDateString()==FiveDayBeforeDayeday.toDateString()){
    返回天数[dateToCheck.getDay()];
    }否则{
    返回日期检查;
    }
    }
    控制台日志(findDay(“07-10-2020”)这对我很有用:

    private\u isSameDay(日期1:Date,日期2:Date):布尔值{
    返回(
    date1.getUTCFullYear()==date2.getUTCFullYear()&&
    date1.getMonth()==date2.getMonth()&&
    date1.getDate()==date2.getDate()
    );
    }
    private _getSeparatorBody(日期:date):字符串{
    如果(此日期为SameDay(日期,新日期())){
    返回“今天”;
    }
    const昨天=新日期();
    昨日.setDate(昨日.getDate()-1);
    如果(今天(日期,昨天)){
    返回“昨天”;
    }
    返回日期。toISOString();
    }
    
    我建立在@Kapilrc源代码之上。语言变量应该对ToLocalString()有效。享受吧

    函数创建人性化日期(
    时间戳,
    昨天,,
    今天"课文",,
    明天的课文,
    语言
    ) {
    var in_the_last_7days_date_options={weekday:'long'};
    风险价值
    
    export function isToday(date, now) {
      const yearDate = date.getYear();
      const monthDate = date.getMonth();
      const dayDate = date.getDate();
      const yearNow = now.getYear();
      const monthNow = now.getMonth();
      const dayNow = now.getDate();
      if (yearDate === yearNow && monthDate === monthNow && dayDate === 
        dayNow) {
        return true
      }
      return false
    }