如何加/减使用JavaScript的日期?如何加/减使用JavaScript的日期?(How to

2019-05-17 10:02发布

我希望让用户轻松地添加和为了使用JavaScript按日期浏览他们的作品减去日期。

日期是以下格式: “MM / DD / YYYY”。 我希望他们能够点击“下一步”按钮,如果日期是:“06/01/2012”,然后单击[下一步],它应该成为:“06/02/2012”。 如果他们点击“下一页”按钮,然后它应该成为,“收取罚金”。

它需要跟踪的闰年的天数在当月,等等

有任何想法吗?

PS使用AJAX来从服务器获取的日期是不是一种选择,它有点laggy,而不是为客户端希望用户体验。

Answer 1:

码:

 var date = new Date('2011', '01', '02'); alert('the original date is ' + date); var newdate = new Date(date); newdate.setDate(newdate.getDate() - 7); // minus the date var nd = new Date(newdate); alert('the new date is ' + nd); 

使用日期选择器:

$("#in").datepicker({
    minDate: 0,
    onSelect: function(dateText, inst) {
       var actualDate = new Date(dateText);
       var newDate = new Date(actualDate.getFullYear(), actualDate.getMonth(), actualDate.getDate()+1);
        $('#out').datepicker('option', 'minDate', newDate );
    }
});

$("#out").datepicker();​

的jsfiddle演示

可能出现得心应手额外的东西:

getDate()   Returns the day of the month (from 1-31)
getDay()    Returns the day of the week (from 0-6)
getFullYear()   Returns the year (four digits)
getHours()  Returns the hour (from 0-23)
getMilliseconds()   Returns the milliseconds (from 0-999)
getMinutes()    Returns the minutes (from 0-59)
getMonth()  Returns the month (from 0-11)
getSeconds()    Returns the seconds (from 0-59)

很好的链接: MDN日期



Answer 2:

您需要使用getTime()setTime()以在JavaScript Date对象或添加的。减去时间。 使用setDate()getDate()到达月1,30,31等的限制时会导致误差..

使用时刻设定允许您设置以毫秒为单位的偏移,并让Date对象图中的其余部分:

var now=new Date();
var yesterdayMs = now.getTime() - 1000*60*60*24*1; // Offset by one day;
now.setTime( yesterdayMs );


Answer 3:

startdate.setDate(startdate.getDate() - daysToSubtract);


startdate.setDate(startdate.getDate() + daysToAdd);


Answer 4:

JavaScript的Date对象可以帮助在这里。

第一步是对那些字符串转换为Date的情况。 这是很容易做到:

var str = "06/07/2012"; // E.g., "mm/dd/yyyy";
var dt = new Date(parseInt(str.substring(6), 10),        // Year
                  parseInt(str.substring(0, 2), 10) - 1, // Month (0-11)
                  parseInt(str.substring(3, 5), 10));    // Day

然后,你可以做各种有用的计算。 JavaScript的日期理解闰年和这样。 他们用“天”,这是完全 86400秒长的一个理想化的概念。 他们的基本价值是因为大纪元的毫秒数(午夜,1970年1月1日); 它可以为前大纪元日期负数。

更多的关于在MDN页Date

你也可以考虑使用像图书馆MomentJS ,这将有助于解析,做日期数学,格式...



Answer 5:

可能这将有助于

    <script type="text/javascript" language="javascript">
        function AddDays(toAdd) {
            if (!toAdd || toAdd == '' || isNaN(toAdd)) return;
            var d = new Date();
            d.setDate(d.getDate() + parseInt(toAdd));

            document.getElementById("result").innerHTML = d.getDate() + "/" + d.getMonth() + "/" + d.getFullYear();
        }

function SubtractDays(toAdd) {
            if (!toAdd || toAdd == '' || isNaN(toAdd)) return;
            var d = new Date();
            d.setDate(d.getDate() - parseInt(toAdd));

            document.getElementById("result").innerHTML = d.getDate() + "/" + d.getMonth() + "/" + d.getFullYear();
        }
    </script>
    ---------------------- UI ---------------
        <div id="result">
        </div>
        <input type="text" value="0" onkeyup="AddDays(this.value);" />
        <input type="text" value="0" onkeyup="SubtractDays(this.value);" />


Answer 6:

//In order to get yesterday's date in mm/dd/yyyy.


function gimmeYesterday(toAdd) {
            if (!toAdd || toAdd == '' || isNaN(toAdd)) return;
            var d = new Date();
            d.setDate(d.getDate() - parseInt(toAdd));
var yesterDAY = (d.getMonth() +1) + "/" + d.getDate() + "/" + d.getFullYear();
$("#endDate").html(yesterDAY);
        }
$(document).ready(function() {
gimmeYesterday(1);
});

你可以试一下: http://jsfiddle.net/ZQAHE/



Answer 7:

在JavaScript中日期的工作总是有点麻烦。 我总是最后使用库。 Moment.js和XDate都是伟大的:

http://momentjs.com/

http://arshaw.com/xdate/

小提琴:

http://jsfiddle.net/39fWa/

var $output = $('#output'),
    tomorrow = moment().add('days', 1);

$('<pre />').appendTo($output).text(tomorrow);

tomorrow = new XDate().addDays(-1);

$('<pre />').appendTo($output).text(tomorrow);



Answer 8:

我喜欢的,方式是,如果你有个约会对象,你可以从中减去另一个日期对象获得的差异。 Date对象是基于某一日期的毫秒。

var date1 = new Date(2015, 02, 18); // "18/03/2015", month is 0-index
var date2 = new Date(2015, 02, 20); // "20/03/2015"

var msDiff = date2 - date1; // 172800000, this is time in milliseconds
var daysDiff = msDiff / 1000 / 60 / 60 / 24; // 2 days

因此,这是你如何减去日期。 现在,如果你想添加它们吗? DATE1 + date2的给出了一个错误。但是,如果我想在毫秒的时间我可以使用:

var dateMs = date1 - 0;
// say I want to add 5 days I can use
var days = 5;
var msToAdd = days * 24 * 60 * 60 * 1000; 
var newDate = new Date(dateMs + msToAdd);

通过减去0你把日期对象到毫秒格式。



Answer 9:

您可以使用本地JavaScript Date对象跟踪日期。 它会给你当前的日期,让您跟踪的日历中选择具体的东西,甚至帮助你管理不同的时区。 您可以加减法,天/小时/秒改变您正在使用的日期或计算新日期。

看看这个对象的引用,以了解更多:

日期

希望帮助!



Answer 10:

所有这些功能添加日期是错误的。 您在传递错误的一个月的日期功能。 有关该问题的更多信息: http://www.domdigger.com/blog/?p=9



Answer 11:

var date = new Date('your date string here'); // e.g. '2017-11-21'

var newdate = new Date(date.getTime() + 24*60*60*1000 * days) // days is the number of days you want to shift the date by

这是添加/跨几个月和几年中减去时工作可靠的解决方案。 花费了太多的时间与GETDATE和方法的setDate摆弄周围,试图调整为月/年的变化之后意识到了这一点。

decasteljau(在这个线程)已经回答了这一点,但只是想强调这种方法的实用性,因为90%的答案在那里推荐GETDATE和的setDate方法。



Answer 12:

东西我使用(jQuery的需要),在我的剧本我需要它目前的一天,但你当然可以相应地修改它。

HTML:

<label>Date:</label><input name="date" id="dateChange" type="date"/>
<input id="SubtractDay" type="button" value="-" />
<input id="AddDay" type="button" value="+" />

JavaScript的:

    var counter = 0;

$("#SubtractDay").click(function() {
    counter--;
    var today = new Date();
    today.setDate(today.getDate() + counter);
    var formattedDate = new Date(today);
    var d = ("0" + formattedDate.getDate()).slice(-2);
    var m = ("0" + (formattedDate.getMonth() + 1)).slice(-2);
    var y = formattedDate.getFullYear();
    $("#dateChange").val(d + "/" + m + "/" + y);
});
$("#AddDay").click(function() {
    counter++;
    var today = new Date();
    today.setDate(today.getDate() + counter);
    var formattedDate = new Date(today);
    var d = ("0" + formattedDate.getDate()).slice(-2);
    var m = ("0" + (formattedDate.getMonth() + 1)).slice(-2);
    var y = formattedDate.getFullYear();
    $("#dateChange").val(d + "/" + m + "/" + y);
});

的jsfiddle



Answer 13:

我用过的最好date命令是日期FNS的几个原因:

  • 采用原生的JavaScript Date格式。
  • 不可改变的; 使用纯函数建成并始终返回一个新的日期实例,而不是改变了传递的一个。
  • 模块化; 输入你需要的功能。

包经理:

"date-fns": "^1.30.1"

码:

import { addDays, subDays } from 'date-fns'

let today = new Date()
let yesterday = subDays(today, 1)
let tomorrow = addDays(today, 1)

简单真棒。



文章来源: How to add/subtract dates with JavaScript?