Bạn có biết một sự kiện lịch sử nào đó xảy ra vào thứ mấy ?

Liên hệ QC

hanhkta

Thành viên mới
Tham gia
30/4/11
Bài viết
4
Được thích
0
Lúc đầu mình thắc mắc ngày 1 tháng 1 năm 1 là thứ mấy ??? hỏi google thì một số bạn trả lời thứ 2, một số bạn trả lời chủ nhật. Mình thử dùng excel tính nhưng gặp trở ngại là với mốc thời gian trước 1/1/1900 thì excel báo lỗi dữ liệu như file mình gửi dưới đây. Ai đó xem hộ mình được với ?
Một câu hỏi tương tự là quốc khánh Mỹ là thứ mấy ??? -+*/-+*/
 

File đính kèm

  • weekday.xlsx
    11.5 KB · Đọc: 6
Lần chỉnh sửa cuối:
C6: =CHOOSE(WEEKDAY(C5),"Chủ nhật","Thứ hai","Thứ ba","Thứ tư","Thứ năm","Thứ sáu","Thứ bảy")
 
Thank to leonguyenz, nhưng mình muốn biết ngày 4/7/1776 là thứ mấy ??? có hàm nào làm được không ?
 
Thank to leonguyenz, nhưng mình muốn biết ngày 4/7/1776 là thứ mấy ??? có hàm nào làm được không ?
Theo Excel tính toán thì ngày 4 tháng 7 năm 1776 thuộc thứ năm
Lưu ý: Nếu dùng công thức thì chỉ tính được những ngày sau năm 1900, còn VBA thì tính được hết ---> Cách làm như sau:
- Bấm Alt + F11 mở cửa sổ Visual Basic
- Bấm Ctrl + G để mở cửa sổ Immediate
- Gõ dòng lệnh ?Weekday("1776/7/4") rồi Enter ---> Kết quả nhận được là số 5 <==> thứ năm
Ngày tháng năm trong Weekday phải gõ theo định dạng yyyy/mm/dd nhé
 
Lần chỉnh sửa cuối:
Theo Excel tính toán thì ngày 4 tháng 7 năm 1776 thuộc thứ năm Lưu ý: Nếu dùng công thức thì chỉ tính được những ngày sau năm 1900, còn VBA thì tính được hết ---> Cách làm như sau: - Bấm Alt + F11 mở cửa sổ Visual Basic - Bấm Ctrl + G để mở cửa sổ Immediate - Gõ dòng lệnh ?Weekday("1776/7/4") rồi Enter ---> Kết quả nhận được là số 5 thứ năm Ngày tháng năm trong Weekday phải gõ theo định dạng yyyy/mm/dd nhé
Thử ?weekday(2011/11/09)=6 Mà hôm nay là ngày thứ 4 anh. Vậy Kết quả này không chính xác (Lúc đầu không có dấu "", sẽ cho ra kết quả sai như trên, Nếu cho vào "" rùi thì em thấy định dạng dd/mm/yyyy vẫn ra kết quả chính xác)
 
Lần chỉnh sửa cuối:
Nhân đây xin hỏi các bạn 1 câu:
Như tôi nói ở trên thì ngày 4 tháng 7 năm 1776 thuộc thứ năm ---> Vậy ta dùng phương pháp gì để kiểm chứng kết quả?
 
Sao mình tính ra thứ ba nhỉ, theo suy luận của mình cứ 28 năm sẽ lặp lại cùng tháng, ngày và thứ giống nhau, vì vậy 04/7/1776 sẽ giống với ngày 04/7/2000 (thứ ba). Chẳng biết sai chổ nào!
 
Sao mình tính ra thứ ba nhỉ, theo suy luận của mình cứ 28 năm sẽ lặp lại cùng tháng, ngày và thứ giống nhau, vì vậy 04/7/1776 sẽ giống với ngày 04/7/2000 (thứ ba). Chẳng biết sai chổ nào!
Anh dùng code VBA tính là biết liền chứ gì
Ví dụ: Ta khẳng định ngày 4 tháng 7 năm 1776 là thứ năm... Vậy thì cứ từ mốc này tính đến hôm nay (9/11/2011) nếu ra kết quả là thứ tư thì chứng tỏ khẳng định của ta là đúng
PHP:
Sub Test()
  Dim dat1 As Long, dat2 As Long, i As Long, tmp As Long, n As Long
  dat1 = DateSerial(1776, 7, 4)
  dat2 = Date
  n = Weekday(dat1)
  For i = dat1 To dat2
    tmp = ((n - 1) Mod 7) + 1
    n = n + 1
  Next
  MsgBox tmp = Weekday(Date)
End Sub
 
Sao mình tính ra thứ ba nhỉ, theo suy luận của mình cứ 28 năm sẽ lặp lại cùng tháng, ngày và thứ giống nhau, vì vậy 04/7/1776 sẽ giống với ngày 04/7/2000 (thứ ba). Chẳng biết sai chổ nào!
Quy luật là cứ sau 1463 ngày, tức là lấy ngày gốc cộng thêm 2, năm gốc cộng thêm 4, sẽ trùng thứ. Tức là 4/7/1776 + 1463*n = X, sau đó WEEDAY(X) sẽ ra kết quả.
 
Theo Excel tính toán thì ngày 4 tháng 7 năm 1776 thuộc thứ năm
Lưu ý: Nếu dùng công thức thì chỉ tính được những ngày sau năm 1900, còn VBA thì tính được hết ---> Cách làm như sau:
- Bấm Alt + F11 mở cửa sổ Visual Basic
- Bấm Ctrl + G để mở cửa sổ Immediate
- Gõ dòng lệnh ?Weekday("1776/7/4") rồi Enter ---> Kết quả nhận được là số 5 <==> thứ năm
Ngày tháng năm trong Weekday phải gõ theo định dạng yyyy/mm/dd nhé
Hình như cũng chưa thể tin tưởng được VBA. Em làm một thí nghiệm đơn giản như sau:
Trong bảng tính Excel, công thức =WEEKDAY("1900/1/1") có kết quả là 1
Còn trong VBA, lệnh ?WEEKDAY("1900/1/1") có kết quả là 2
Quy luật là cứ sau 1463 ngày, tức là lấy ngày gốc cộng thêm 2, năm gốc cộng thêm 4, sẽ trùng thứ. Tức là 4/7/1776 + 1463*n = X, sau đó WEEDAY(X) sẽ ra kết quả.
Còn thuật toán này thì em không hiểu. Excel đâu có hiểu được những ngày trước ngày 01/01/1900 đâu mà lấy 4/7/1776 để đi tính; và n là bao nhiêu, tính bằng cách nào?

Theo cách tính của em thì kết quả cũng là thứ 3:
Mã:
=7-MOD(DATEDIF(DATE(2000+MOD(C1,4),B1,A1),DATE(2020,12,31),"yd")+1+(1900-C1-1)*365+INT((1900-C1-1)/4)-1,7)
Với:
A1 là ngày: 4
B1 là tháng: 7
C1 là năm: 1776
 
Hình như cũng chưa thể tin tưởng được VBA. Em làm một thí nghiệm đơn giản như sau:
Trong bảng tính Excel, công thức =WEEKDAY("1900/1/1") có kết quả là 1
Còn trong VBA, lệnh ?WEEKDAY("1900/1/1") có kết quả là 2
Vậy Huuthang nghĩ gì về code này:
PHP:
Sub Test()
  Dim dat1 As Long, dat2 As Long, i As Long, tmp As Long, n As Long
  dat1 = DateSerial(1900, 1, 1)
  dat2 = Date
  n = Weekday(dat1)
  MsgBox n
  For i = dat1 To dat2
    tmp = ((n - 1) Mod 7) + 1
    n = n + 1
  Next
  MsgBox tmp = Weekday(Date)
End Sub
Đây là phép tính thông thường (chu kỳ 7 ngày)
Lưu ý rằng đây là VB code chứ không phải VBA nha
-----------------------
Theo cách tính của em thì kết quả cũng là thứ 3:
Mã:
=7-MOD(DATEDIF(DATE(2000+MOD(C1,4),B1,A1),DATE(2020,12,31),"yd")+1+(1900-C1-1)*365+INT((1900-C1-1)/4)-1,7)
Với:
A1 là ngày: 4
B1 là tháng: 7
C1 là năm: 1776
Theo tôi thì kết quả = thứ 3 là không đúng ---> Hãy tra lịch để kiểm chứng
 
Lần chỉnh sửa cuối:
Biết rằng kết quả thứ ba là không đúng nhưng giờ mới tìm ra chổ sai nè: Mình lấy chu kỳ 28 năm đó là số chu kỳ 4 năm của năm nhuận (có 366 ngày) nhân với 7 ngày trong tuần, tuy nhiên trong khoảng 100 năm người ta lại bỏ đi một năm nhuận để điều chỉnh lại theo mặt trời. Vì vậy chu kỳ 28 năm của mình chỉ đúng trong khoảng một thế kỷ thôi. Từ 1776 đến nay bị bỏ hai năm nhuận nên tính ra thứ năm như ndu là đúng.
Thường là năm chia hết cho 4 là năm nhuận, vậy theo các bạn có hai năm nào bị bỏ nhuận, kể từ 1776 đến nay?
 
Vậy Huuthang nghĩ gì về code này:
PHP:
Sub Test()
  Dim dat1 As Long, dat2 As Long, i As Long, tmp As Long, n As Long
  dat1 = DateSerial(1900, 1, 1)
  dat2 = Date
  n = Weekday(dat1)
  MsgBox n
  For i = dat1 To dat2
    tmp = ((n - 1) Mod 7) + 1
    n = n + 1
  Next
  MsgBox tmp = Weekday(Date)
End Sub
Đây là phép tính thông thường (chu kỳ 7 ngày)
Lưu ý rằng đây là VB code chứ không phải VBA nha
-----------------------

Theo tôi thì kết quả = thứ 3 là không đúng ---> Hãy tra lịch để kiểm chứng

Tôi chỉ nghĩ, sai hay đúng chưa biết, NHƯNG anh dùng weekday trong VBA để chỉ ra thứ 5, sau đó pác lại dùng chính weekday trong cái CODE anh đưa ra để kiểm tra vậy liệu có cái sai trùng cái sai không? Hay nói cách khác, là dùng công cụ chưa kiểm chứng để kiểm chứng sai đúng của chính nó

ý kiến ngoài cuộc hy vọng kiểm chứng,
 
Biết rằng kết quả thứ ba là không đúng nhưng giờ mới tìm ra chổ sai nè: Mình lấy chu kỳ 28 năm đó là số chu kỳ 4 năm của năm nhuận (có 366 ngày) nhân với 7 ngày trong tuần, tuy nhiên trong khoảng 100 năm người ta lại bỏ đi một năm nhuận để điều chỉnh lại theo mặt trời. Vì vậy chu kỳ 28 năm của mình chỉ đúng trong khoảng một thế kỷ thôi. Từ 1776 đến nay bị bỏ hai năm nhuận nên tính ra thứ năm như ndu là đúng.
Thường là năm chia hết cho 4 là năm nhuận, vậy theo các bạn có hai năm nào bị bỏ nhuận, kể từ 1776 đến nay?
Đó là năm 1800 và năm 1900 chăng?
Năm này chia hết 100 nhưng không chia hết cho 400
Theo đó thì trong VBA nó "biết" được không có ngày 29 tháng 2 năm 1900 nhưng công thức Excel thì không biết điều này
Code kiểm chứng
PHP:
Sub Test()
 MsgBox DateSerial(1900, 2, 29)
End Sub
 
Lần chỉnh sửa cuối:
Tôi chỉ nghĩ, sai hay đúng chưa biết, NHƯNG anh dùng weekday trong VBA để chỉ ra thứ 5, sau đó pác lại dùng chính weekday trong cái CODE anh đưa ra để kiểm tra vậy liệu có cái sai trùng cái sai không? Hay nói cách khác, là dùng công cụ chưa kiểm chứng để kiểm chứng sai đúng của chính nó

ý kiến ngoài cuộc hy vọng kiểm chứng,
Weekday để kiểm tra giá trị đầu tiên thôi bạn à... Nó ra kết quả bao nhiêu ta tạm để đó, xong sẽ duyệt từ mốc ấy đến hôm nay... Từ lúc này ta tính WEEKDAY không bằng WEEKDAY mà bằng toán tử MOD ---> Đến thời điểm HÔM NAY, nếu nó cho kết quả đúng =WEEKDAY(hôm nay) thì xem như cái WEEKDAY đầu tiên là đúng
Giải thuật rất đơn giản ---> Nếu cái đầu là sai thì cái sau đó cũng sai và ngược lại
WEEKDAY có được kiểm chứng chưa tôi không chắc, nhưng chắc rằng WEEKDAY(hôm nay) nó = thứ tư đấy
----------------
Ghi chú: Toàn bộ tính toán dựa trên VB code, không phải công thức Excel nha
 
Weekday để kiểm tra giá trị đầu tiên thôi bạn à... Nó ra kết quả bao nhiêu ta tạm để đó, xong sẽ duyệt từ mốc ấy đến hôm nay... Từ lúc này ta tính WEEKDAY không bằng WEEKDAY mà bằng toán tử MOD ---> Đến thời điểm HÔM NAY, nếu nó cho kết quả đúng =WEEKDAY(hôm nay) thì xem như cái WEEKDAY đầu tiên là đúng
Giải thuật rất đơn giản ---> Nếu cái đầu là sai thì cái sau đó cũng sai và ngược lại
WEEKDAY có được kiểm chứng chưa tôi không chắc, nhưng chắc rằng WEEKDAY(hôm nay) nó = thứ tư đấy
----------------
Ghi chú: Toàn bộ tính toán dựa trên VB code, không phải công thức Excel nha
Kết quả của code đó cũng chưa thể dùng để kiểm chứng được. Vì ta đã thấy nó dựa vào hệ thống ngày tháng, vậy nên nếu hệ thống ngày tháng cuả ngôn ngữ đó sai thì kết quả của phép thử vẫn là đúng trong khi thực tế nó sai.

Nếu năm 1900 không phải là năm nhuận thì công thức của tôi sai. Do thuật toán được sử dụng trong công thức đó là dựa vào nguyên tắc năm nào chia hết cho 4 thì là năm nhuận.
 
Lần chỉnh sửa cuối:
Kết quả của code đó cũng chưa thể dùng để kiểm chứng được. Vì ta đã thấy nó dựa vào hệ thống ngày tháng, vậy nên nếu hệ thống ngày tháng cuả ngôn ngữ đó sai thì kết quả của phép thử vẫn là đúng trong khi thực tế nó sai.
.
Trời... nếu nói vậy thì phải xem lại toàn bộ hệ thống chương trình Visual Basic rồi ---> Cái này thì tôi xin thua!
Nếu bạn nói Excel có sai sót thì tôi chấp nhận, còn nói Visual Basic có sai về ngày tháng thì... e rằng bạn nói hơi qua
Nếu bạn cảm thấy không tin tưởng độ chình xác của Visual Basic thì tự mình tìm lấy đáp án khác vậy!
Ẹc... Ẹc...
Nếu năm 1900 không phải là năm nhuận thì công thức của tôi sai. Do thuật toán được sử dụng trong công thức đó là dựa vào nguyên tắc năm nào chia hết cho 4 thì là năm nhuận.
Năm 1900 không phải năm nhuận, điều này là đương nhiên khỏi phải bàn cải ---> Có tìm khắp Google cũng là câu trả lời đó mà thôi
 
Lần chỉnh sửa cuối:
Web KT
Back
Top Bottom