0

數學問題，一個月中每一日是星期幾？

PS. 星期 0 代表周日

EX. 上例中 31 號是：(4+31-1)%7=6 (星期六)

dragonH iT邦超人 5 級 ‧ 2019-08-07 16:39:13 檢舉

ccutmis iT邦高手 8 級 ‧ 2019-08-07 16:41:05 檢舉

d2=(d1+D2-D1+35)%7

12019 - Doom's Day Algorithm
https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=242&page=show_problem&problem=3170
froce iT邦大師 1 級 ‧ 2019-08-08 07:04:29 檢舉

https://zh.wikipedia.org/wiki/%E6%98%9F%E6%9C%9F%E7%9A%84%E8%A8%88%E7%AE%97

11 個回答

1
dragonH
iT邦超人 5 級 ‧ 2019-08-07 16:10:37

codepen

``````const dayFormat = ['Monday', 'TuesDay', 'Wednesday', 'ThursDay', 'Friday', 'Saturday', 'Sunday'];
const monthToFind = new Date('2019-08');

const findDay = (dayToFind) => {
const monthTotalDays = new Date(monthToFind.getFullYear(), monthToFind.getMonth() + 1, 0).getDate();
const firstDayOfMonth = monthToFind.getDay();
const firstDateMathFind = firstDayOfMonth > dayToFind
? monthToFind.getDate() + (dayToFind - firstDayOfMonth + 7)
: monthToFind.getDate() + (dayToFind - firstDayOfMonth);
for (let date = firstDateMathFind; date <= monthTotalDays; date += 7) {
console.log(`\${date} is \${dayFormat[dayToFind - 1]}`);
}
};
findDay(6);
``````

``````const findSpecificDate = (dateToFind) => {
const whatDayIsTheDate = new Date(dateToFind).getDay()
console.log(`\${dateToFind} is \${whatDayIsTheDate === 0 ? dayFormat[6] : dayFormat[whatDayIsTheDate - 1]}`)
}

findSpecificDate('2019-08-07')
``````

codepen

0

iT邦大師 1 級 ‧ 2019-08-07 16:20:13

1
Lee
iT邦新手 5 級 ‧ 2019-08-07 16:30:41

1
ccutmis
iT邦高手 8 級 ‧ 2019-08-07 16:35:42
``````<!doctype html>
<body>
<script>
day_flag=4;
day_arr=[];
for(var i=0;i<31;i++){
day_arr.push(day_flag);
document.write((i+1)+'日是　星期'+num2weekday(day_flag)+'<br/>');
day_flag++;
if(day_flag>7) day_flag=1;
}

function num2weekday(arg){
return (arg==1?'一':(arg==2?'二':(arg==3?'三':(arg==4?'四':(arg==5?'五':(arg==6?'六':'日'))))));
}

document.write('<br/>=============<br/>');
query_date=10;
day_flag=day_arr[10-1];
document.write('查詢: '+(query_date)+'日是　星期'+num2weekday(day_flag)+'<br/>');
</script>
</body></html>
``````

``````1日是　星期四
2日是　星期五
3日是　星期六
4日是　星期日
5日是　星期一
6日是　星期二
7日是　星期三
8日是　星期四
9日是　星期五
10日是　星期六
…中間略過…
30日是　星期五
31日是　星期六

=============

``````

Re:＂每次看這種相關問題感覺就是把功課丟上來伸手要答案＂…恩，我也有這種感覺…

dragonH iT邦超人 5 級 ‧ 2019-08-07 16:37:29 檢舉

ccutmis iT邦高手 8 級 ‧ 2019-08-07 16:39:09 檢舉

【＊＊此則訊息已被站方移除＊＊】
ccutmis iT邦高手 8 級 ‧ 2019-08-07 22:58:29 檢舉

1
idd0305
iT邦見習生 ‧ 2019-08-07 17:12:28

4

iT邦超人 1 級 ‧ 2019-08-07 17:26:21

java我是不會寫啦，給你php參考。反正只是算數學。很容易帶過

``````<?php
\$m1 = 4; //1號星期幾
\$d = 10; //要求得同月\$d號的星期
\$w = (4+10-1)%7;
\$wStrArr = Array('日','一','二','三','四','五','六');
echo "{\$d}號為星期{\$wStrArr[\$w]}";
?>
``````

ccutmis iT邦高手 8 級 ‧ 2019-08-07 17:47:53 檢舉

4

iT邦高手 1 級 ‧ 2019-08-07 18:47:53

``````declare @m1 int = 4

select Sort
,(case (@m1+Sort-1) % 7 when 0 then '日' when 1 then '一' when 2 then '二' when 3 then '三' when 4 then '四' when 5 then '五' when 6 then '六'end) WeekName
from (
select Row_Number()Over(order by number) as Sort
from master..spt_values
) as k
where Sort <= 31
``````
0
e6319a5b
iT邦新手 5 級 ‧ 2019-08-08 19:40:18
``````def calculate(a):
lists=['星期一','星期二','星期三','星期四','星期五','星期六','星期日']
return lists[(a+2)%7]
``````
0
taki5000
iT邦新手 5 級 ‧ 2019-08-08 20:05:08

Date物件直接操作就好？看不懂自己算幹嘛

0

iT邦新手 2 級 ‧ 2019-08-09 22:06:12
``````# use python3
al = ['星期四', '星期五', '星期六', '星期日', '星期一', '星期二', '星期三']
bl = al * 4 + al[0:3]

for i, element in enumerate(bl, 1):
print("第%d天 --> %s" % (i, element))
``````
``````result:

...

``````

0
wunrong
iT邦新手 5 級 ‧ 2019-08-13 10:49:21
``````var array = ['一','二','三','四','五','六','日']
var index = null

for (let date = 0; date < 31; date++) {
if(index == null) {
index = 3
console.log(date + 1 + ' 號  , 星期 ' + array[index])
continue
}

index ++

if(index > array.length - 1) {
index = 0
}

console.log(date + 1 + ' 號  , 星期 ' + array[index])
}
``````