我已经检查了stackoverflow是否有解决问题的方法,但是由于我对Javascript不太满意,因此无法采用我发现的任何解决方法。
我只需要一小段代码即可粘贴到HTML页面中。
我认为问题对您来说很容易!
我每个星期三晚上20:30召开一次会议,我需要创建一个小的JS来显示会议的下一个日期。例如:
今天是2018年18日(星期三),必须在页面上显示会议将在今天(今天晚上20:30)进行。
这是页面区域的屏幕,我需要在其中放置JS代码(或其他语言,如果您建议的话)。 www.maurolangiu.com/business-meeting
我还需要将时间设置为意大利语格式,即DAY-NUMBER-MONTH-YEAR。
我不需要在脚本中花费时间,因为它不会改变...
在今天的20:31,脚本将自动将日期转换为下一个2018年7月25日星期三,然后像这样继续。
现在我必须通过FTP手动更改时间,这很糟糕。
这个问题有解决方案吗?
答案 0 :(得分:3)
// day in number where Monday is 1, and so on...
// hour is an hour in 24-hour format
// min is minutes
function getNextDay(day, hour, min){
let date = new Date();
let currentDay = date.getDay();
let currentHours = date.getHours();
let currentMins = date.getMinutes();
let newDate = new Date();
if(day == currentDay && currentHours <= hour){
if(currentMins< min)
return date;
}else if(day == currentDay)
newDate.setDate(date.getDate() + 7);
else
newDate.setDate(date.getDate() + (day + 7 - currentDay) % 7);
return newDate;
}
只需调用此功能,您第二天就会得到
要更改日期格式,例如dd / mm / yyyy,您可以调用此函数
function changeFormat(today){
var dd = today.getDate();
var mm = today.getMonth()+1; //January is 0!
var yyyy = today.getFullYear();
if(dd<10){
dd='0'+dd;
}
if(mm<10){
mm='0'+mm;
}
var today = dd+'/'+mm+'/'+yyyy;
console.log(today);
//document.getElementById("DATE").value = today;
}
changeFormat(getNextDay(3,20,30));
这将为您工作。
答案 1 :(得分:2)
如果当前日期是星期日,星期一或星期二-您必须添加3或2或1天。否则,您必须添加7/6/5/4天。这意味着星期日/星期一/星期二的偏移量为3 - day_of_week
,而其余部分为10 - day_of_week
<script>
function nextWednesday()
{
var today = new Date();
var todayN = today.getDay();
var offset = (todayN < 3 ? 3 : 10) - todayN; // <--- the most important part
today.setDate(today.getDate() + offset);
return today;
}
</script>
答案 2 :(得分:0)
你去的英雄..将此粘贴到您的html页面中,然后将日期div的ID设置为datediv
<script>
document.addEventListener("DOMContentLoaded", function(){
var today = new Date();
var todayN = today.getDay();
var def = todayN - 3;
var NextWednesday = new Date();
NextWednesday.setDate(today.getDate()+def);
document.getElementById("datediv").innerHTML = NextWednesday;
});
</script>
答案 3 :(得分:0)
chrono是一个允许从自然语言表达式中解析日期的库。请参见演示您的用例的示例:
function eh_onLoad ( eve ) {
let dtx;
dtx = chrono.parseDate(
'This Wednesday, 8pm, or next Wednesday, 8pm' // The string to parse.
, new Date() // The reference datetime: right now ...
, { forwardDate: true} // ... only computing future dates
);
document.querySelector('#asDate').appendChild(document.createTextNode(dtx));
}
#asDate { background-color: lightgrey; }
<!DOCTYPE html>
<html>
<head>
<title>SO Date Math in natural language</title>
<script src="https://cdn.jsdelivr.net/npm/chrono-node/chrono.min.js"></script>
</head>
<body onload="eh_onLoad()">
<p><span>This Wednesday, 8pm, or next Wednesday, 8pm</span>: <span id="asDate"></span></p>
</body>
</html>
虽然语言环境不包含意大利语,但支持D-M-Y日期格式。
自然语言解析器有其局限性。例如,不支持省略号;快捷方式This or next Wednesday, 8 pm
不起作用。
答案 4 :(得分:0)
尝试使用switch
语句尝试找出下一个星期三还有多少天。然后,您可以将这些天添加到当前日期。
const currentDate = new Date();
let daysLeft = 0;
switch(currentDate.getDay()) {
case 0:
daysLeft = 4;
break;
case 1:
daysLeft = 5;
break
case 2:
daysLeft = 6;
break;
case 3: // it's wednesday
// Check for the time (20:30)
if (currentDate.getHours() > 20 && currentDate.getMinutes() > 30) {
daysLeft = 6;
}
else {
daysLeft = 0;
}
break;
case 4:
daysLeft = 1;
break;
case 5:
daysLeft = 2;
break;
case 6:
daysLeft = 3
break;
}
currentDate.setDate(currentDate.getDate() + daysLeft);
const day = currentDate.getDate();
const month = currentDate.getMonth() + 1;
const year = currentDate.getFullYear();
const meetingDate = `${day}/${month}/${year}`;
document.getElementById('meeting-date').innerHTML = meetingDate;
<div id="meeting-date"></div>
答案 5 :(得分:0)
此代码无需使用任何库,并且无需按照您希望的方式对其进行格式化即可。 只需将日期设置为下一个星期三,如果今天是星期三,并且它在20:30之后,那么就去下个星期。
var d = new Date();
d.setDate(d.getDate() + (3 + 7 - d.getDay()) % 7);
if(d.getDay() == 3 && d.getHours() > 19 && d.getMinutes() > 30){
d.setDate(d.getDate() + (3 + 7 - d.getDay()));
}
var options = {'weekday': 'long', 'month': 'long', 'day': '2-digit', 'year': 'numeric'};
var date = d.toLocaleString('it-IT', options);
console.log(date);
编辑:首先,您要添加一个脚本元素,您必须在上面添加我的代码。然后,如果我查看您的代码,就有这部分
<h4 class="card-title">Mercoledi 18 Luglio 2018</h4>
您必须在其中删除文本“ Mercoledi 18 Luglio 2018”,并将其保留为空。然后,您向其中添加唯一的ID。 <h4 class="card-title" id="nextMeeting">.
,最后在我的JavaScript代码中用
console.log(date);
document.getElementById('nextMeeting').innerHTML = date.toString();
我认为这应该解决它。
答案 6 :(得分:0)
您需要提供事件代码的标识符,例如:
<h4 id="nextEvent" class="card-title">Mercoledi 18 Luglio 2018</h4>
然后在脚本部分放置以下代码
$(document).ready(function(){
var today = new Date();
var todayDate = today.getDate();
var day = today.getDay();
var differrence = day - 3;
var nextDate = new Date();
var options = {'weekday': 'long', 'month': 'long', 'day': '2-digit', 'year': 'numeric'};
if(day == 3 && today.getHours() > 19 && today.getMinutes() > 30){
nextDate.setDate(todayDate + (3 + 7 - day));
}
else{
nextDate.setDate(todayDate + differrence);
}
$("#nextEvent").text(nextDate.toLocaleString('it-IT', options));
});