【问题标题】:Difference between two string of date JS两串日期JS的区别
【发布时间】:2017-09-28 12:26:11
【问题描述】:

我尝试编写代码,接下来应该这样做: 当客户来到一个站点时,他会看到两个输入,即今天的日期和日期加上三天。在底部,该站点将是一个表格,显示两个输入日期之间的天数(1 天、2-3 天、4-7 天)。我编写了可以设置日期的代码,但我不能按类设置元素的样式。我是最新的。请任何帮助。

document.addEventListener('DOMContentLoaded', function() {
  var dFrom = document.querySelector('#my_lease_before');
  var dTo = document.querySelector('#my_lease_from');

    // get today date
    var dNow = new Date();
    // create var for add 3 days
    var dThen = new Date();
    // add 3 days
    dThen.setDate(dThen.getDate() + 3);

    // add value to inputes
    dTo.value = formatDate(dNow);
    dFrom.value = formatDate(dThen);

    //date-date=number, after make from millisec to days
    var dd = (dThen - dNow) / 1000 / 60 / 60 / 24;
   console.log(dd);
   // alert(dd);
    if (dd <= 1) {
      var s1 = document.querySelector('.space-1');
      s1.style.borderRadius = '50%';
      s1.style.background = 'red';
      s1.style.display = 'inline-block';
      s1.style.color = 'white';
      s1.style.padding = '5px 2px';
    } else if (dd > 1 && dd <= 2) {
      var s2 = document.querySelectorAll('.space-2');
      s2.style.borderRadius = '50%';
      s2.style.background = 'red';
      s2.style.display = 'inline-block';
      s2.style.color = 'white';
      s2.style.padding = '5px 2px';
    } else if (dd > 2 && dd <= 6) {
      var s3 = document.querySelectorAll('.space-3');
       s3.style.borderRadius = '50%' ;
       s3.style.borderRadius = '50%';
       s3.style.background = 'red';
       s3.style.display = 'inline-block';
       s3.style.color = 'white';
       s3.style.padding = '5px 2px';
 alert(s3);
    }else if (dd > 6 && dd <= 10) {
      var s4 = document.getElementsByClass('space-4');
      s4.style.borderRadius = '50%';
      s4.style.background = 'red';
      s4.style.display = 'inline-block';
      s4.style.color = 'white';
      s4.style.padding = '5px 2px';
      
    }else if (dd > 10 && dd <= 16) {
      var s5 = document.getElementsByClass('space-5');
      s5.style.borderRadius = '50%';
      s5.style.background = 'red';
      s5.style.display = 'inline-block';
      s5.style.color = 'white';
      s5.style.padding = '5px 2px';
    }else if (dd > 16 && dd <= 24) {
      var s6 = document.getElementsByClass('space-6');
      s6.style.borderRadius = '50%';
      s6.style.background = 'red';
      s6.style.display = 'inline-block';
      s6.style.color = 'white';
      s6.style.padding = '5px 2px';
    }
  });


function formatDate(date) {
  //add zero for date before 10
  return [
    date.getDate().toString().padStart(2, '0'),
    (date.getMonth() + 1).toString().padStart(2, '0'),
    date.getFullYear()
  ].join('.');
  // delimiter
};

function parseDate(date) {
  var tmp = date.split('.');
  return new Date(tmp[2], tmp[1], tmp[0], 0, 0, 0, 0);

};
<label>
	<span>rent from :</span> 
	<input type="data" name="my_lease_from" id="my_lease_from">
</label>
<label>
	<span>rent to :</span> 
	<input type="data" name="my_lease_before" id="my_lease_before">
</label>
<div class="my_price_gps">
    <span>GPS навигатор</span>
    <table>
		<thead>
			<tr>
				<th>2 дня</th>
				<th>3-6 дней</th>
				<th>7-10 дней</th>
	                        <th>11-16 дней</th>
				<th>17-24 дня</th>
			</tr>
		</thead>
		<tbody>
			<tr>
				<td class="my_day_2"><span class="space-2">5 €</span></td>
				<td class="my_day_3"><span class="space-3">4 €</span></td>
				<td class="my_day_4"><span class="space-4">4 €</span></td>
				<td class="my_day_5"><span class="space-5">3 €</span></td>
				<td class="my_day_6"><span class="space-6">2 €</span></td>
			</tr>
		</tbody>
	</table>
</div>
<div class="my_price_chair">
	<span>Детские<br/>автокресла</span>
	<table>
		<tbody>
			<tr>
				<td class="my_day_2"><span class="space-2">4 €</span></td>
				<td class="my_day_3"><span class="space-3">0 €</span></td>
				<td class="my_day_4"><span class="space-4">0 €</span></td>
				<td class="my_day_5"><span class="space-5">0 €</span></td>
				<td class="my_day_6"><span class="space-6">0 €</span></td>
			</tr>
		</tbody>
	</table>
 </div>

【问题讨论】:

  • 另外,如果我这样写 var s3 = document.querySelectorAll('.space-3')[1]; , 然后只打印一个数组
  • 请不要使用 cmets 添加信息,编辑问题。不清楚你在问什么,你只是想知道如何设置元素的样式吗?如果是这样,那与 javascript 或日期无关。我建议将样式信息放入 CSS 类中,然后根据 dd 的值应用适当的类。
  • 在解析函数中,tmp[1]应该是tmp[1]-1

标签: javascript string date input


【解决方案1】:

这样使用 要将日期解析为 UTC,请附加 Z - 例如:

new Date('2011-04-11T10:20:30Z').

要以 UTC 显示日期,请使用 .toUTCString(), 要以用户的本地时间显示日期,请使用 .toString().

For More Details

【讨论】:

  • 为了什么?日期的格式也可以,字符串类型也可以。问题是如何在我的代码中更改 .space-n 类的样式。
  • OP 似乎在问“…但我不能按类为元素设置样式”,所以与日期无关。如果是这样,它将与许多解析或格式化问题之一重复。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-25
  • 2016-12-01
  • 2019-03-04
相关资源
最近更新 更多