web-dev-qa-db-ja.com

JavaScriptを使用して現在までの週を追加するにはどうすればよいですか?

Javascriptは間違いなく私の最大のポイントではありません。私はこれを数時間試してきましたが、どこかで日付のフォーマットにこだわっているようです。

ユーザーが日付(dd/mm/yyyy)を選択し、この日付が取得されて2週間が追加され、日付が別のフォームフィールドにコピーされるフォームがあります。

以下の私の最新の試みは、日付を追加することさえしていませんが、1つのフォームフィールドで選択した日付を別のフィールドにコピーするだけです。「03/02/2012」を選択すると、「Fri Mar 02 2012 00:00:00 GMT + 0000 (GMT標準時) 'であるため、アメリカ形式および完全な日付で出力されます。同じ形式で出力して2週間追加するにはどうすればよいですか?

function LicenceToOccupy(acceptCompletionDate)
{
    var date1 = new Date(acceptCompletionDate);
    document.frmAccept.acceptLicence.value = date1;

}
25
JBoom

あなたはこれを行うことができます :

let numWeeks = 2;
let now = new Date();
now.setDate(now.getDate() + numWeeks * 7);
alert(now);

フィドルを見ることができます こちら

MDNのドキュメント

SetDate()メソッドは、現在設定されている月の開始日を基準にしてDateオブジェクトの日を設定します。

69

これは質問自体には答えないかもしれませんが、これらの式で解決策を見つけることができます。

_6.04e+8_ =ミリ秒で1週間

Date.now() =ミリ秒単位で

Date.now() + 6.04e+8 =今日から1週間

Date.now() + (6.04e+8 * 2) =今日から2週間

new Date( Date.now() + (6.04e+8 * 2) ) =今日から2週間の日付オブジェクト

5
Luis

_date1_を、渡す文字列をで表すDateオブジェクトに割り当てています。 acceptLicense値に表示されるのは、日付オブジェクトのtoString()表現です(これを確認するにはalert(date1.toString())を試してください)。

必要に応じて出力するには、文字列の連結と さまざまなDateメソッド を使用する必要があります。

_var formattedDate = date1.getDate() + '/' + (date1.getMonth() + 1) + '/' + date1.getFullYear();
_

2週間の追加に関しては、現在の日付に14日を追加する必要があります。

_date1.setDate(date.getDate() + 14);
_

...これにより、月の増加などが自動的に処理されます。

最終的には、次のようになります。

_var date1 = new Date(acceptCompletionDate);
date1.setDate(date1.getDate() + 14);
document.frmAccept.acceptLicence.value = date1.getDate() + '/' + (date1.getMonth() + 1) + '/' + date1.getFullYear();
_

N.BJavaScriptの月は0インデックス(1月= 0、12月= 11)であるため、月の_+1_です。

Edit:コメントに対処するには、代わりにdateを作成する必要があります。Date引数は「RFC2822またはISO 8601を表す文字列」日付。" ( こちらを参照 )。

_var segments = acceptCompletionDate.split("/");
var date1 = new Date(segments[2], segments[1], segments[0]);
_
5
Matt
var d = new Date("2019-08-01");
d.setDate(d.getDate()+parseInt(7));

ここで、7は日付に追加する日です

1
Anshul Jain

Toastの答えに対する最小限の修正だけで、探している正確な形式が得られますdd/mm/yyyy

function LicenceToOccupy(acceptCompletionDate)
{
    var date1 = new Date(acceptCompletionDate);
    date1.setDate(date1.getDate() + 14); //This adds the two weeks

    var day = date1.getDate() 9 10 ? date1.getDate() : '0' + date1.getDate();
    var month = date1.getMonth() >= 9 ? date1.getMonth() + 1: '0' + date1.getMonth();

    document.frmAccept.acceptLicence.value = day + '/' + month + '/' + date1.getFullYear();
}
0
Franklin Rivero

これはあなたが探していることをするはずです。

function LicenceToOccupy(acceptCompletionDate)
{
    var date1 = new Date(acceptCompletionDate);
    date1.setDate(date1.getDate() + 14);
    document.frmAccept.acceptLicence.value = date1.getDate() + '/' + (date1.getMonth() + 1) + '/' + date1.getFullYear();
}
0
Toast

特定のdd/mm/yyyy形式を解析して14で日を増分するには、パーツを分割するなどの方法で、特定のy/m/dで日付オブジェクトを作成します。 (すぐに日数を増やします)セパレーターは常に-であるため、次のように動作します:

function LicenceToOccupy(acceptCompletionDate)
{
    var parts = acceptCompletionDate.split("/");
    var date1 = new Date(parts[2], (parts[1] - 1), parseInt(parts[0]) + 14); //month 0 based, day: parse to int and increment 14 (2 weeks)
    document.frmAccept.acceptLicence.value = date1.toLocaleDateString(); //if the d/m/y format is the local string, otherwise some cusom formatting needs to be done

}
0
Me.Name