2017-05-22 5 views
-2

私はmm-dd-YYYY H:iの日付形式を持っています。選択した日付時刻に30分を追加します。JqueryのDate Timeに30分を追加するには?

function SetEndDate(start_date){ // start_date = "05-25-2017 05:00" 
     var duration  = '30'; 
     var end_date_tmp = new Date(start_date); 

     end_date_tmp.setMinutes(duration); 
     $('#end_date').val(end_date_tmp); 
} 

無効な日付エラーが返されます。このような

+4

の可能性のある重複した[JavaScriptのDateオブジェクトに30分を追加する方法?](http://stackoverflow.com/questions/1197928/how-to-add- 30分のjavascriptの日付オブジェクト) –

+0

http://stackoverflow.com/questions/4517672/how-to-add-20-minutes-to-a-current-date –

+0

ダイナミックな日付?私の日付形式が異なっていた。 – Chaudhary

答えて

1
function SetEndDate(start_date){ // start_date = "05-25-2017 05:00" (mm-dd-yyyy) format 
var duration  = '30'; 

var my_date_format = function(start_date){ 
    var d   = new Date(Date.parse(start_date.replace(/-/g, "/"))); 
    var month  = ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12']; 
    var date  = d.getFullYear() + "-" + month[d.getMonth()] + "-" + d.getDate(); 
    var time  = d.getHours()+":"+d.getMinutes(); 
    var date_time = date + " " + time; 
    return (date_time); 
}; 

var date_time = my_date_format(start_date); 
    d2    = new Date (date_time); 
    d2.setTime(d2.getTime() + (duration * 60 * 1000)); 

var date_new = new Date(d2); 
    yr    = date_new.getFullYear(); 
    month   = date_new.getMonth() < 10 ? '0' + (date_new.getMonth() + 1) : (date_new.getMonth() + 1); 
    day    = date_new.getDate() < 10 ? '0' + date_new.getDate() : date_new.getDate(); 
    minutes   = date_new.getMinutes() < 10 ? '0' + date_new.getMinutes() : date_new.getMinutes(); 
    hours   = date_new.getHours() < 10 ? '0' + date_new.getHours() : date_new.getHours(); 
    time   = hours + ":" + minutes; 
    newDate   = month + '-' + day + '-' + yr + ' ' + time; 
$('#end_date').val(newDate); // you can get new date in "newDate" variable 
} 
+1

一般的には、コード専用の回答が目立つようになっています(非コメントのコードではもっとそうです)。アイデアはコード化されていますか? – greybeard

1

試してみてください。このよう

var newDateObj = new Date(); 
newDateObj.setTime(oldDateObj.getTime() + (30 * 60 * 1000)); 

function SetEndDate(start_date) 
{ // start_date = "05-25-2017 05:00" 
     var end_date_tmp = new Date(start_date); 
     end_date_tmp.setTime(start_date.getTime() + (30 * 60 * 1000)); 
} 

Refer this link

+0

に渡しますが、警告する(end_date_tmp);その時私はエラー "無効な日付"を与えます。 – Chaudhary

+0

これらの数字を日付時刻に変換することができます 'alert(新しい日付(end_date_tmp).toGMTString()); ' – User6667769

2

あなたのライブラリーは、カスタムフォーマットを使用しているため( "2017年5月25日午前5時00分" )、私はfecha libraryを試してみることをお勧めします。これは、適切なクロスブラウザの解析/書式設定を処理します。

function GetEndDate(start_date){ // start_date = "05-25-2017 05:00" 
 
    var duration = 30; 
 
    var d = fecha.parse(start_date, 'MM-DD-YYYY HH:mm'); 
 

 
    d.setMinutes(d.getMinutes() + duration); 
 
    return fecha.format(d, 'MM-DD-YYYY HH:mm');; 
 
} 
 

 
console.log(GetEndDate('05-25-2017 05:00')); 
 
//Call it like so: 
 
//$('#end_date').val(GetEndDate(/* Your variable here */));
<script src="https://cdnjs.cloudflare.com/ajax/libs/fecha/2.3.1/fecha.min.js"></script>

+0

私はfetchaが悪いと言っているわけではありませんが、それは必要ではない –

+0

@ArthurGuiotはどうして必要ないのですか?技術的には、stackoverflowに関するすべての質問はライブラリを必要としません。この答えは、図書館が関わっていなければもっと複雑になります。したがって、私はそれが有効な答えだと感じています。 – FrankerZ

+0

文字列を解析して日付オブジェクトに渡すのが難しくない...またはOPの変更を提案する理由は、ライブラリを提案している理由です。 – charlietfl

関連する問題