Javascript-如何在HTML页面上显示下星期三的日期

时间:2018-07-18 11:40:10

标签: javascript html css

我已经检查了stackoverflow是否有解决问题的方法,但是由于我对Javascript不太满意,因此无法采用我发现的任何解决方法。

我只需要一小段代码即可粘贴到HTML页面中。

我认为问题对您来说很容易!

我每个星期三晚上20:30召开一次会议,我需要创建一个小的JS来显示会议的下一个日期。例如:

今天是2018年18日(星期三),必须在页面上显示会议将在今天(今天晚上20:30)进行。

这是页面区域的屏幕,我需要在其中放置JS代码(或其他语言,如果您建议的话)。 www.maurolangiu.com/business-meeting

我还需要将时间设置为意大利语格式,即DAY-NUMBER-MONTH-YEAR。

我不需要在脚本中花费时间,因为它不会改变...

Date Problem

在今天的20:31,脚本将自动将日期转换为下一个2018年7月25日星期三,然后像这样继续。

现在我必须通过FTP手动更改时间,这很糟糕。

这个问题有解决方案吗?

7 个答案:

答案 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));
});