簡體   English   中英

根據當前日期獲取日期名稱

[英]Get the name of the day depending on the current date

我需要獲得以下信息:

  • 檢查我的當前日期是否是當前星期(星期一-星期日),如果我處於當前星期,我應該能夠返回以三個字母(MON-星期一)(EEE格式)格式的日期名稱
  • 如果我缺席本周,則需要返回三個字母的月(d MMM格式),例如11 MAR

我嘗試了以下方法:

function changeDate(date)
{
   var d = new Date();
   if(d) // check if in the current week
   {
      return date.format(EEE);
   }else if()  //check if out of the week
   {
      return date.format(d MMM);
   }
}

date格式為MM/dd/yyyy HH:mm

假設到當前日期,您是指給定的日期

嘗試這個 :

function getWeek(d) {                            
  var target  = new Date(d.valueOf());  
  var dayNr   = (d.getDay() + 6) % 7;  
  target.setDate(target.getDate() - dayNr + 3);  
  var jan4    = new Date(target.getFullYear(), 0, 4);    
  var dayDiff = (target - jan4) / 86400000;     
  var weekNr = 1 + Math.ceil(dayDiff / 7);     
  return weekNr;     
}

function changeDate(date) {
   var d = new Date();
   return getWeek(d) == getWeek(date)? 
          date.toString().substring(0,3).toUpperCase():
          b.getDate() + " " + b.toString().substring(3,7).toUpperCase();
}

此處獲取getWeek()位置。

樣品用法:

var a = new Date("Feb 14 2014"),  
    b = new Date("Mar 15 2014");

changeDate(a);               // "FRI"

changeDate(b);               // "15  MAR"

此方法getCalWeek將為您提供一個對象,其中包含給定日期的星期和年份。

function thursday(mydate) {
  var Th=new Date();
  Th.setTime(mydate.getTime() + (3-((mydate.getDay()+6) % 7)) * 86400000);
  return Th;
}

function getCalWeek(thedate) {
    ThursDate=thursday(thedate);
    weekYear=ThursDate.getFullYear();
    ThursWeek1=thursday(new Date(weekYear,0,4));
    theweek=Math.floor(1.5+(ThursDate.getTime()-ThursWeek1.getTime())/86400000/7);
    return {"week": theweek, "year" : weekYear};
}

然后,您可以比較兩個日期的星期和年份

var weekdays = ["SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"];
var months = ["JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC"];

function changeDate(date) {
   d = new Date(); // today
   weekAndYearToday = getCalWeek(d);
   weekAndYearDate = getCalWeek(date);
   if(weekAndYearToday.week = weekAndYearDate.week && weekAndYearToday.year = weekAndYearDate.year) {
      // here it is clear that "date" is in the current week
      return weekdays[date.getDay()];
   } else {
      return date.getDate() + " " + months[date.getMonth()];
   }
}

當您提供驗證日期和測試星期時,以下代碼應為您提供必需的日期。

這里已經過單元測試

function changeDate(dateToVerify, dateToVerifyAgainst)
{
    var dateToVerify = new Date(dateToVerify);
    var dateToVerifyAgainst = new Date(dateToVerifyAgainst);

    function isInRequiredWeek(dateToVerify, dateToVerifyAgainst) {
        var dateToVerify = new Date(dateToVerify);
        var dateToVerifyAgainst = new Date(dateToVerifyAgainst);

        function getMonday(d) {
          var day = d.getDay(),
              diff = d.getDate() - day + (day == 0 ? -6:1); // adjust when day is sunday
          return new Date(d.setDate(diff));
        }

        var startOfWeek = getMonday(dateToVerifyAgainst);
        startOfWeek.setHours(0);
        startOfWeek.setMinutes(0);
        startOfWeek.setSeconds(0);

        var endOfWeek = new Date(dateToVerifyAgainst);
        endOfWeek.setHours(0);
        endOfWeek.setMinutes(0);
        endOfWeek.setSeconds(0);
        endOfWeek.setDate(endOfWeek.getDate() + 6);
        endOfWeek.setHours(23);
        endOfWeek.setMinutes(59);
        endOfWeek.setSeconds(59);
        endOfWeek.setMilliseconds(999);


        if ( dateToVerify >= startOfWeek && dateToVerify <= endOfWeek) {
           return true;
        } else {
           return false;
        }
    }

    Date.prototype.getDayAbbr = function(){
    var days_abbr = [
                        'SUN',
                        'MON',
                        'TUE',
                        'WED',
                        'THU',
                        'FRI',
                        'SAT'
                    ];
    return days_abbr[this.getDay()];
    };

    Date.prototype.getMonthAbbr = function(){
    var month_abbrs = [
                        'JAN',
                        'FEB',
                        'MAR',
                        'APR',
                        'MAY',
                        'JUN',
                        'JUL',
                        'AUG',
                        'SEP',
                        'OCT',
                        'NOV',
                        'DEC'
                    ];

    return month_abbrs[this.getMonth()];
    };

   if (isInRequiredWeek(dateToVerify, dateToVerifyAgainst)) // check if in the current week
   {
      return dateToVerify.getDayAbbr();
   }else
   {
      return (dateToVerify.getDate() + " " + dateToVerify.getMonthAbbr());
   }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM