4

私が達成しようとしているのは、この関数に日付を入力すると、次のようになるはずです。

日付が次の場合:

今日 -Today
明日として出力Tomorrow
- 昨日として出力 - 次として出力Yesterday

それ以外 - 「月 - 日」形式で出力

しかし、私はこれを機能させることができません。何か助けはありますか?ここでJsFiddle 。

//My Date variable
var mydate = "22-Nov-2012"

alert(MDFormat(mydate));

/*
If the date is:
    Today - show as "Today";
    Tomorrow - show as "Tomorrow"
    Yesterday - show as "Yesterday"
    Else - show in "Month - Day format"
*/
function MDFormat(MMDD) {
    MMDD= new Date(MMDD);
    var months = ["Jan", "Feb", "Mar", "Apr", "May", "June", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
    var day = MMDD.getDate();
    var month = months[MMDD.getMonth()];

    var currentDay = new Date().getDay();
    var today;
    if (currentDay == MMDD.getDay()) {
        today = MMDD.getDay();
    } 
    var tmr = currentDay + 1; 
    var yest = currentDay - 1; 

    var strDate;

    switch (MMDD) {
        case today:
            strDate = "Today";
            break;
        case tmr:
            strDate = "Tomorrow";
            break;
        case yest:
            strDate = "Yesterday";
            break;
        default:
            strDate = month + "-" + day;
            break;
    }

    return strDate;
}​

: 私はプラグインを使用しない方法を好みます。

4

2 に答える 2

10

getDate定義済みの有効な日付形式でのみ機能します。使用している形式は有効な定義済み形式ではありません。これを試してみると:

var mydate = "Nov 22, 2012";
alert(MDFormat(mydate));

できます。

また、ロジックのいくつかの問題を自由に修正してください。

//My Date variable
var mydate = "Nov 22, 2012"

alert(MDFormat(mydate));


/*
If the date is:
    Today - show as "Today";
    Tomorrow - show as "Tomorrow"
    Yesterday - show as "Yesterday"
    Else - show in "Month - Day format"
*/

function MDFormat(MMDD) {
    MMDD = new Date(MMDD);

    var months = ["Jan", "Feb", "Mar", "Apr", "May", "June", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
    var strDate = "";

    var today = new Date();
    today.setHours(0, 0, 0, 0);

    var yesterday = new Date();
    yesterday.setHours(0, 0, 0, 0);
    yesterday.setDate(yesterday.getDate() - 1);

    var tomorrow = new Date();
    tomorrow.setHours(0, 0, 0, 0);
    tomorrow.setDate(tomorrow.getDate() + 1);

    console.log(MMDD.getTime(),today.getTime(),MMDD.getTime()==today.getTime());

    if (today.getTime() == MMDD.getTime()) {
        strDate = "Today";
    } else if (yesterday.getTime() == MMDD.getTime()) {
        strDate = "Yesterday";
    } else if (tomorrow.getTime() == MMDD.getTime()) {
        strDate = "Tomorrow";
    } else {
        strDate = months[MMDD.getMonth()] + "-" + MMDD.getDate();
    }

    return strDate;
}

デモンストレーション: http://jsfiddle.net/xqnc8/4/

于 2012-11-21T18:36:42.233 に答える
0

Datejsプラグインで試してみてください。操作は簡単です。http://jsbin.com/otasiz/1/editという 1 つの可能な解決策を配線しました。また、以下:

var downTheRoad = "11/30/2012";
var yesterday = "11/20/2012";
var tomorrow = "11/22/2012";
var today = "11/21/2012";

test(downTheRoad);
test(yesterday);
test(tomorrow);
test(today);

function test(dateStr) {
  var date = Date.parse(dateStr);
  var today = Date.parse("today");
  var todayStr = today.toString("MM/dd/yyyy");
  var tomorrow = Date.parse("tomorrow");
  var tomorrowStr = tomorrow.toString("MM/dd/yyyy");
  var yesterday = Date.parse("yesterday");
  var yesterdayStr = yesterday.toString("MM/dd/yyyy");

  if (dateStr === todayStr) {
    alert(dateStr + " as today");
  } else if (dateStr === tomorrowStr) {
    alert(dateStr + " as tomorrow");
  } else if (dateStr === yesterdayStr) {
    alert(dateStr + " as yesterday");
  }
  else {
    alert(dateStr + " as " + Date.parse(dateStr).toString("MMM-dd"));
  }
}
于 2012-11-21T16:24:48.933 に答える