Bạn có biết một sự kiện lịch sử nào đó xảy ra vào thứ mấy ? (1 người xem)

  • Thread starter Thread starter hanhkta
  • Ngày gửi Ngày gửi
Liên hệ QC

Người dùng đang xem chủ đề này

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

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:
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ă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
Em không nói VB sai ngày tháng mà chỉ muốn nói thuật toán trong đoạn code test ở bài #14, dùng nó để test thì có vẻ không được thuyết phục. Nếu anh dùng thuật toán đó để test trên công thức Excel thì kết quả cũng không có gì thay đổi.
 
Em không nói VB sai ngày tháng mà chỉ muốn nói thuật toán trong đoạn code test ở bài #14, dùng nó để test thì có vẻ không được thuyết phục. Nếu anh dùng thuật toán đó để test trên công thức Excel thì kết quả cũng không có gì thay đổi.
Tôi thấy rất hợp lý, không có gì là không thuyết phục cả:
- Trước tiên ta phải chấp nhận rằng hệ thống ngày tháng của VB là chuẩn ---> Ví nếu ngay cả điều cơ bản này mà không chuẩn thì toàn bị giải thuật sau đó sẽ phá sản
- Tiếp theo, lấy WEEKDAY của ngày cần tính (là ngày 1/1/ 1900)
- Từ kết quả trên ta cứ tính tiếp đến hôm nay (dùng toán tự MOD, không dùng WEEKDAY)... nếu cách tính bằng toán tử mod cho kết quả = WEEKDAY(hôm nay) thì chứng tỏ cái WEEKDAY đầu tiên là đúng
---------------------------------------------------
Điều cốt lỏi ở đây là phải chấp nhận hệ thống ngày tháng của VB là chuẩn ---> Điều này thì tôi không đủ dũng cảm để nghi ngờ
Còn nếu làm trên Excel thì không chắc lắm... Ta thừa biết Excel luôn có những sai sót kỳ lạ và ngớ ngẩn
Tóm lại: Nếu triển khai giải thuật trên Excel thì mới là không thuyết phục còn trên VB thì.. quá OK (Excel không hề biết năm 1900 là năm không nhuận)
---------------------------------------------------
Mà thôi... điều quan trọng là tôi đã biết được chính xác ngày 4 tháng 7 năm 1776 và ngày 1 tháng 1 năm 1900 thuộc thứ mấy là đủ rồi
 
Co AddIn này để xử lý ngày tháng năm từ năm 100 trở đi
http://j-walk.com/ss/excel/files/xdate.htm
Ta biết rằng hệ thống ngày tháng của VB là rất chuẩn, vậy thay vì dùng 1 Add-In nào đó, tự ta cũng viết được vậy
Theo đường link trên, ta có danh sách tên người cùng ngày sinh, ngày chết như sau:

presidents.gif


Đây phần lớn đều là ngày tháng trước năm 1900 nên không thể dùng công thức thông thường tính được (kể cả DATEDIF)... nhưng VB code hoàn toàn làm được điều này
PHP:
Function xDateYearDIF(ByVal Date1, ByVal Date2) As Long
  xDateYearDIF = Year(Date2) - Year(Date1) + (Format(Date2, "mmdd") < Format(Date1, "mmdd"))
End Function
Yêu cầu nhập liệu:
- Hoặc là nhập đúng quy định trong Control Panel
- Hoặc là luôn nhập ngày tháng theo chuẩn yyyy/mm/dd
---------------------
Với VB code thì dù tính Weekday hay bất cứ cái gì liên quan đến ngày tháng trước năm 1900 đều được tuốt
 

File đính kèm

Em cũng hay thường nghiên cứu dạng ngày tháng năm lắm.nhưng hôm nay thầy ndu và anh bebo cho em thấy được cái hay của ngày tháng rồi cám ơn su phụ ndu và anh bebo nhiều nhé.
 
Đó 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
Đúng vậy, chạy code này sẽ chỉ ra hai năm đó không nhuận:
Mã:
Sub Test()
  Dim dat1 As Date, dat2 As Date, i As Date, j As Long, k As Long
  dat1 = DateSerial(1776, 7, 4)
  dat2 = Date
  For i = dat1 To dat2
    If Day(i) = 28 And Month(i) = 2 And Year(i) Mod 4 = 0 Then j = 1
    If Day(i) = 29 And Month(i) = 2 And Year(i) Mod 4 = 0 Then k = 1
    If Day(i) = 1 And Month(i) = 3 And Year(i) Mod 4 = 0 Then
        If j <> k Then MsgBox Year(i)
        k = 0: j = 0
    End If
  Next
End Sub
Đồng thời phù hợp với quy luật của lịch Gregory
 
Đúng vậy, chạy code này sẽ chỉ ra hai năm đó không nhuận:
Mã:
Sub Test()
  Dim dat1 As Date, dat2 As Date, i As Date, j As Long, k As Long
  dat1 = DateSerial(1776, 7, 4)
  dat2 = Date
  For i = dat1 To dat2
    If Day(i) = 28 And Month(i) = 2 And Year(i) Mod 4 = 0 Then j = 1
    If Day(i) = 29 And Month(i) = 2 And Year(i) Mod 4 = 0 Then k = 1
    If Day(i) = 1 And Month(i) = 3 And Year(i) Mod 4 = 0 Then
        If j <> k Then MsgBox Year(i)
        k = 0: j = 0
    End If
  Next
End Sub
Đồng thời phù hợp với quy luật của lịch Gregory
Biết rằng năm 1776 là năm nhuận, vậy ta chỉ cần xét duy nhất tháng 2 từng 4 năm 1 lần là được rồi
Vòng lập vầy sẽ nhanh hơn:
PHP:
Sub Test2()
  Dim dat As Date, m As Long
  Do
    dat = DateSerial(1776, 2 + m, 28)
    If Month(dat + 1) = 3 And (Year(dat) Mod 4 = 0) Then MsgBox Year(dat)
    m = m + 48
  Loop Until dat >= Date
End Sub
Từ đó có thể biết được từ năm 100 đến nay có bao nhiêu năm chia hết cho 4 nhưng lại không phải năm nhuận:
PHP:
Sub Test3()
  Dim dat As Date, m As Long
  Do
    dat = DateSerial(100, 2 + m, 28)
    If Month(dat + 1) = 3 And (Year(dat) Mod 4 = 0) Then MsgBox Year(dat)
    m = m + 48
  Loop Until dat >= Date
End Sub
 
Lần chỉnh sửa cuối:
cháu dùng hàm INT và MOD cũng tính được bác xem thử, hôm trước cháu tính sai vì không biết năm có tận cùng là 00 mà không chia hết 400 không phải năm nhuận --=0
 
cháu dùng hàm INT và MOD cũng tính được bác xem thử, hôm trước cháu tính sai vì không biết năm có tận cùng là 00 mà không chia hết 400 không phải năm nhuận --=0
Bạn tính thế nào gửi lên đây xem thử có chính xác không?
 
cháu sửa ở đầu topic , vì trả lời nhanh cháu không biết attach file --=0
 
cháu sửa ở đầu topic , vì trả lời nhanh cháu không biết attach file --=0
Tính cũng hay lắm
Để tôi thử cách tính của tôi xem thế nào
- Cell C3 là NĂM
- Cell C4 là THÁNG
- Cell C5 là NGÀY
- Cell C6 là công thức tính WEEKDAY:
PHP:
=TEXT(MOD(C3+INT((C3-1)/4)-INT((C3-1)/100)+INT((C3-1)/400)+DATE(IF(MOD(C3,100)=0,IF(MOD(C3,400)>0,1,0),IF(MOD(C3,4)=0,0,1)),C4,C5)-DATE(IF(MOD(C3,100)=0,IF(MOD(C3,400)>0,1,0),IF(MOD(C3,4)=0,0,1)),1,1)+1,7),"[$-42A]dddd")
Một công thức duy nhất, không cột phụ
Kiêm tra lại xem có sai sót gì không nha!
 

File đính kèm

Tính cũng hay lắm
Để tôi thử cách tính của tôi xem thế nào
- Cell C3 là NĂM
- Cell C4 là THÁNG
- Cell C5 là NGÀY
- Cell C6 là công thức tính WEEKDAY:
PHP:
=TEXT(MOD(C3+INT((C3-1)/4)-INT((C3-1)/100)+INT((C3-1)/400)+DATE(IF(MOD(C3,100)=0,IF(MOD(C3,400)>0,1,0),IF(MOD(C3,4)=0,0,1)),C4,C5)-DATE(IF(MOD(C3,100)=0,IF(MOD(C3,400)>0,1,0),IF(MOD(C3,4)=0,0,1)),1,1)+1,7),"[$-42A]dddd")
Một công thức duy nhất, không cột phụ
Kiêm tra lại xem có sai sót gì không nha!
híc! Thầy có mở lớp đào tạo Ex,hay có đệ tự nào mở lớp ngoài Hà nội không cho em xin địa chỉ em đến học với.
Nhìn thầy và mọi người mà em thấy khát quá!
 
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ả?

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ả?
1- Tôi đến Link nầy nhờ Google với câu hỏi: Tính toán ngày trước 1/1/1900.
2- Rất thú vị và Cảm ơn khi https://www.giaiphapexcel.com/ đã tìm ra cách tính các ngày trước 1/1/1900: Nhờ IDE (Integrated Development Environment) hay Môi trường tích hợp. Cái nầy ít chặt chẽ, chúng cứ xem dãy String đúng quy cách là chuyển qua trị số Long, mà không cần kiểm tra trước hay sau 1/1/1900 (Function IsDate). Nghĩa là chúng cứ áp dụng quy tắc của Microsoft mở rộng cho cả những ngày trước mốc, là số âm. Các phép toán hoàn toàn chính xác nếu thêm hàm Abs để biến thành dương.
3- Chỉ lưu ý là thời điểm tháng 10/1582, Date là (m/d/y) 10/15/1582 là ngày bắt đầu lịch Gregorius. Trước 15/10/1582 là ngày 4/10/1582 (Lịch Julius) = nhảy 10 ngày.
Vd: Tìm WeekDay của ngày (m/d/y) 10/14/1582 mà thực tế lịch Gregorius không có ngày nầy, hàm WeekDay vẫn trả về là 5, và tương tự ngày (m/d/y) 10/4/1582 thực tế có của lịch Julius là Thứ Năm, nhưng hàm WeekDay trả về là 2.
Code IDE: Msgbox WeekDay("10/4/1582")
[Nếu cần thiết: Điều nầy đòi hỏi chúng ta phải viết một hàm riêng mà giá trị trả về là String chứ không phải Date để thích hợp với lịch Julius trước thời điểm đó].
 

File đính kèm

  • october1582-copy.png
    october1582-copy.png
    171.2 KB · Đọc: 2

Bài viết mới nhất

Back
Top Bottom