草庐IT

Javascript 为 future 日期添加时间

coder 2024-05-16 原文

我看了一些其他问题,没有看到我的具体问题,所以如果有人问过或回答过,请原谅。

我想做的是找出一个简单的“付款”计算器,并提供一些附加信息,例如第一个付款日期和最后一个付款日期。

在某些情况下,最后一次付款的日期有效,有时则无效。

这是我的代码:

var myDate = new Date();

var odo = document.contract.firstPaymentDate.value;
var n = odo.split("/"); 
var month = n[0];
var day = n[1];
var year = n[2];

var oldDateObj = new Date(year, month, day);
var newDateObj = new Date(oldDateObj.getTime() + ((document.contract.totalNumberRegularPayments.value - 1)*1209600*1000));
var dd = newDateObj.getDate();
var mm = newDateObj.getMonth();
var y = newDateObj.getFullYear();

var someFormattedDate = mm + '/'+ dd + '/'+ y;
document.contract.lastPaymentDate.value = someFormattedDate;

因此,我采用第一个付款日期,并加上 1209600 秒乘以付款次数(减去 1,因为他们“已经”支付了第一笔款项)。

这基于用户可以选择的特定日期开始。

因此,我的示例是 156 次双周付款(因此计算为 155 次),计算结果为 6 年。如果我选择 1 号的日期,我会得到 10/01/2013 作为开始,但 9/11/2019 作为结束(第一个在星期二,最后一个在星期三)。

15 日(9/15/2013 - 周日 - 至 8/24/2019 - 周六) 20 号(9/20/2013 - 星期五 - 至 8/29/2013 - 星期四)

因此,有时是晚一天,有时是前一天,我不能只对 var dd = newDateObj.getDate();

+1

我真的对发生的事情感到困惑,我希望有人对此有一些经验,或者有人知道我到底做错了什么。

在此先感谢您提供的任何帮助。

最佳答案

如果要添加周数,只需添加 7 倍的天数,例如

var now = new Date();
// Add two weeks
now.setDate(now.getDate() + 14);

因此,如果您有 24 次每两周付款:

var now = new Date();
// Add 24 fortnights (48 weeks)
now.setDate(now.getDate() + 24 * 14);

now.setDate(now.getDate() + 24 * 2 * 7);

你认为最清楚的。

如果你想有一个开始和结束日期:

var start = new Date();
var end = new Date(+start);
end.setDate(end.getDate() + 24 * 14);

alert('Start on: ' + start + '.\nEnd in 24 fortnights: ' + end); 

编辑

这是一个工作示例:

<script>

function calcLastPayment(start, numPayments) {
  if (typeof start == 'string') {
    start = stringToDate(start);
  }

  var end = new Date(+start);
  end.setDate(end.getDate() + --numPayments * 14)
  return end;
}

// Expect date in US format m/d/y
function stringToDate(s) {
  s = s.split(/\D/)
  return new Date(s[2], --s[0], s[1])
}

</script>

<form>
 <table>
  <tr><td>Enter first payment date (m/d/y):
      <td><input name="start">
  <tr><td>Enter number of payments:
      <td><input name="numPayments">
  <tr><td colspan="2"><input type="button" value="Calc end date" onclick="
           this.form.end.value = calcLastPayment(this.form.start.value, this.form.numPayments.value)
           ">
  <tr><td>Last payment date:
      <td><input readonly name="end">
  <tr><td colspan="2"><input type="reset">
 </table>
</form>

鉴于首次付款日期为 9 月 5 日星期四和 3 次还款,它在 10 月 3 日星期四返回,这对我来说似乎是正确的(9 月 5 日和 19 日以及 10 月 3 日)。它应该适用于任意数量的付款。

关于Javascript 为 future 日期添加时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18583715/

有关Javascript 为 future 日期添加时间的更多相关文章

  1. ruby - 我需要将 Bundler 本身添加到 Gemfile 中吗? - 2

    当我使用Bundler时,是否需要在我的Gemfile中将其列为依赖项?毕竟,我的代码中有些地方需要它。例如,当我进行Bundler设置时:require"bundler/setup" 最佳答案 没有。您可以尝试,但首先您必须用鞋带将自己抬离地面。 关于ruby-我需要将Bundler本身添加到Gemfile中吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/4758609/

  2. ruby - 将 Bootstrap Less 添加到 Sinatra - 2

    我有一个ModularSinatra应用程序,我正在尝试将Bootstrap添加到应用程序中。get'/bootstrap/application.css'doless:"bootstrap/bootstrap"end我在views/bootstrap中有所有less文件,包括bootstrap.less。我收到这个错误:Less::ParseErrorat/bootstrap/application.css'reset.less'wasn'tfound.Bootstrap.less的第一行是://CSSReset@import"reset.less";我尝试了所有不同的路径格式,但它

  3. ruby - 续集在添加关联时访问many_to_many连接表 - 2

    我正在使用Sequel构建一个愿望list系统。我有一个wishlists和itemstable和一个items_wishlists连接表(该名称是续集选择的名称)。items_wishlists表还有一个用于facebookid的额外列(因此我可以存储opengraph操作),这是一个NOTNULL列。我还有Wishlist和Item具有续集many_to_many关联的模型已建立。Wishlist类也有:selectmany_to_many关联的选项设置为select:[:items.*,:items_wishlists__facebook_action_id].有没有一种方法可以

  4. ruby-on-rails - date_field_tag,如何设置默认日期? [ rails 上的 ruby ] - 2

    我想设置一个默认日期,例如实际日期,我该如何设置?还有如何在组合框中设置默认值顺便问一下,date_field_tag和date_field之间有什么区别? 最佳答案 试试这个:将默认日期作为第二个参数传递。youcorrectlysetthedefaultvalueofcomboboxasshowninyourquestion. 关于ruby-on-rails-date_field_tag,如何设置默认日期?[rails上的ruby],我们在StackOverflow上找到一个类似的问

  5. ruby-on-rails - Ruby 检查日期时间是否为 iso8601 并保存 - 2

    我需要检查DateTime是否采用有效的ISO8601格式。喜欢:#iso8601?我检查了ruby​​是否有特定方法,但没有找到。目前我正在使用date.iso8601==date来检查这个。有什么好的方法吗?编辑解释我的环境,并改变问题的范围。因此,我的项目将使用jsapiFullCalendar,这就是我需要iso8601字符串格式的原因。我想知道更好或正确的方法是什么,以正确的格式将日期保存在数据库中,或者让ActiveRecord完成它们的工作并在我需要时间信息时对其进行操作。 最佳答案 我不太明白你的问题。我假设您想检查

  6. ruby - 检查日期是否在过去 7 天内 - 2

    我的日期格式如下:"%d-%m-%Y"(例如,今天的日期为07-09-2015),我想看看是不是在过去的七天内。谁能推荐一种方法? 最佳答案 你可以这样做:require"date"Date.today-7 关于ruby-检查日期是否在过去7天内,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/32438063/

  7. ruby-on-rails - 将 Ruby 中的日期/时间格式化为 YYYY-MM-DD HH :MM:SS - 2

    这个问题在这里已经有了答案:Railsformattingdate(4个答案)关闭4年前。我想格式化Time.Now函数以显示YYYY-MM-DDHH:MM:SS而不是:“2018-03-0909:47:19+0000”该函数需要放在时间中.现在功能。require‘roo’require‘roo-xls’require‘byebug’file_name=ARGV.first||“Template.xlsx”excel_file=Roo::Spreadsheet.open(“./#{file_name}“,extension::xlsx)xml=Nokogiri::XML::Build

  8. ruby - 查找字符串中的内容类型(数字、日期、时间、字符串等) - 2

    我正在尝试解析一个CSV文件并使用SQL命令自动为其创建一个表。CSV中的第一行给出了列标题。但我需要推断每个列的类型。Ruby中是否有任何函数可以找到每个字段中内容的类型。例如,CSV行:"12012","Test","1233.22","12:21:22","10/10/2009"应该产生像这样的类型['integer','string','float','time','date']谢谢! 最佳答案 require'time'defto_something(str)if(num=Integer(str)rescueFloat(s

  9. ruby - 可以通过多少种方法将方法添加到 ruby​​ 对象? - 2

    当谈到运行时自省(introspection)和动态代码生成时,我认为ruby​​没有任何竞争对手,可能除了一些lisp方言。前几天,我正在做一些代码练习来探索ruby​​的动态功能,我开始想知道如何向现有对象添加方法。以下是我能想到的3种方法:obj=Object.new#addamethoddirectlydefobj.new_method...end#addamethodindirectlywiththesingletonclassclass这只是冰山一角,因为我还没有探索instance_eval、module_eval和define_method的各种组合。是否有在线/离线资

  10. ruby - 如何在 Ruby 中向现有方法定义添加语句 - 2

    我注意到类定义,如果我打开classMyClass,并在不覆盖的情况下添加一些东西我仍然得到了之前定义的原始方法。添加的新语句扩充了现有语句。但是对于方法定义,我仍然想要与类定义相同的行为,但是当我打开defmy_method时似乎,def中的现有语句和end被覆盖了,我需要重写一遍。那么有什么方法可以使方法定义的行为与定义相同,类似于super,但不一定是子类? 最佳答案 我想您正在寻找alias_method:classAalias_method:old_func,:funcdeffuncold_func#similartoca

随机推荐