0

次の形式の日付を持つ文字列があります:dd-mm-yyyy

文字列に4週間を追加してから、jQuery / Javascriptを使用して新しい文字列を生成するにはどうすればよいですか?

私は持っています

var d = new Date(current_date); 
d.setMonth(d.getMonth() + 1); 
current_date_new = (d.getMonth() + 1 ) + '-' + d.getDate() + '-' + d.getFullYear();    
alert(current_date_new); 

しかし、提供された文字列が正しくない形式であると文句を言います

4

4 に答える 4

2

編集:少しいじった後、ここに解決策があります:

まず、文字列を個々の部分に分割します。

var inputString = "12-2-2005";
var dString = inputString.split('-');

次に、文字列をdatetimeオブジェクトに解析し、それに28日(4週間)を追加します。

var dt = new Date(dString[2],dString[1]-1,dString[0]);
dt.setDate(dt.getDate()+28);

最後に、日付を出力できます

var finalDate = dt.GetDate() + "-" + (dt.GetMonth()+1) + "-" + dt.GetYear();

このコードはを返す必要があり12-3-2005ます。

警告: JavaScriptのDateオブジェクトは月フィールドとして0-11を使用しているようです。したがって、コードでは月に-1と+1が使用されます。

EDIT2:パディングを行うには、次の関数を使用します。

function pad(number, length) {

    var str = '' + number;
    while (str.length < length) {
        str = '0' + str;
    }

    return str;

}

出力をに変更します

var finalDate = pad(dt.GetDate(),2) + "-" + pad(dt.GetMonth()+1,2) + "-" + dt.GetYear();

更新されたフィドルを確認してください。

于 2012-06-07T14:01:44.443 に答える
0

マイナス記号で単純な分割文字列であるmm-dd-yyyyに変換し、次のコードで新しいDateオブジェクトを作成する必要はありません。

var string = '12-02-2012';
var split = string.split('-');
var date = Date(split[2],parseInt(split[1])-1,parseInt(split[0])+1)

date.setDate(date.getDate() + 28);
var fourWeeksLater = date.getDay() + "-"+date.getMonth() +"-"+date.getYear();
于 2012-06-07T14:16:22.510 に答える
0

これは機能しているはずです:

var formattedDate = '01-01-2012',
    dateTokens = formattedDate.split('-'),
    dt = new Date(dateTokens[2], parseInt( dateTokens[1], 10 ) - 1, dateTokens[0]), // months are 0 based, so need to add 1
    inFourWeeks = new Date( dt.getTime() + 28 * 24 * 60 * 60 * 1000 );

jsfiddle: http: //jsfiddle.net/uKDJP/

編集:

Globalizeを使用すると、inFourWeeksをフォーマットできます。

Globalize.format( inFourWeeks, 'dd-MM-yyyy' ) // outputs 29-01-2012
于 2012-06-07T14:33:35.683 に答える
0

日付用に独自のパーサーを作成する代わりに、moment.jsを使用します。

日付を解析するには:

var date = moment('14-06-2012', 'DD-MM-YYYY');

それに4週間を追加するには:

date.add('weeks', 4);

または一度に:

var date = moment('14-06-2012', 'DD-MM-YYYY').add('weeks', 4);

そしてそれを文字列に変換します:

var dateString = date.format('DD-MM-YYYY');
于 2012-06-14T09:55:45.300 に答える