Thuật toán tính âm lịch - Hồ Ngọc Đức

By Trần Tứ Liêm on Thứ Tư, 6 tháng 3, 2024

Blog TTL giới thiệu thuật toán Tính Lịch Vạn Niên - Tính Âm Lịch của Hồ Ngọc Đức. Các thuật toán ở đây được viết bằng ngôn ngữ JavaScript, bài viết theo Blog TTL sẽ giới thiệu các thuật toán này bằng ngôn ngữ VB (Visua Basic) để xây dựng bộ lịch trên file Excel. Thân mời độc giả chờ đọc bài tiếp theo.

Thuật toán tính âm lịch

Hồ Ngọc Đức

TIẾN SỈ HỒ NGỌC ĐỨC


Nguồn từ: https://www.informatik.uni-leipzig.de/~duc/amlich/

Sách Bàn Về Lịch Vạn Niên

By Trần Tứ Liêm on Thứ Sáu, 28 tháng 7, 2023

BÀN VỀ LỊCH VẠN NIÊN, BAN VE LICH VAN NIEN, SÁCH BÀN VỀ LỊCH VẠN NIÊN.

SÁCH BÀN VỀ LỊCH VẠN NIÊN

Tác giả: Tân Việt - Thiều Phong
NHÀ XUẤT BẢN VĂN HÓA DÂN TỘC
Ban Ve Lich Van Nien

LỊCH VẠN NIÊN TTL-EXCEL

By Trần Tứ Liêm on Thứ Sáu, 9 tháng 12, 2022

Đây là bộ lịch vạn sự soạn thảo công phu, được rất nhiều nhà tuyển trạch sử dụng! Và nó sẽ còn được tiếp tục phát triển. 

TẢI LỊCH VẠN NIÊN BẢN MỚI NHẤT

(có nhiều ứng dụng thiên văn, chạy trên máy tính)
Nhấn  trong các dường link để tải về:


(Đã chỉnh sửa và cập nhật lại ngày 23/6/2016)
Có sự góp ý của rất nhiều người dùng
Bản tiếp theo sẽ có phần an sao tử vi và luận giả lá số thông minh.

Bạn có thể tải thêm:





Bản đồ sao được nhúng vào lịch
Các bạn thân mến! Blog TTL đã giới thiệu thuật toán tính Âm Lịch của Hồ Ngọc Đức bằng ngôn ngữ JavaScript, Đây là thuật toán Thiên văn của quốc tế. Bạn có thể xem bài viết này tại: 

Còn ở bài viết này tôi sẽ giới thiệu cho bạn thuật toán tính âm lịch của Hồ Ngọc Đức bằng ngôn ngữ Viasual Basic do Blog TTL chuyển từ ngôn JavaScript. Và File Excel Lịch Vạn Niên xây dựng từ thật toán trên và các tài liệu xem ngày tháng. Nhưng tôi sẽ giới thiệu về File Lịch Vạn Niên trước, thuật toán giới thiệu sau.
File Lịch Vạn Niên là một chương trình xử lý, tính toán một ngày dương nào đó thành ngày âm lịch và các vạn sự của ngày.

Ví dụ như ngày Dương là ngày 01 tháng 01 năm 2013, thì kết quả cơ bản từ chương trình Lịch Vạn Niên là:
  • Là ngày Hoàng Đạo
  • Ngày thứ 3
  • Ngày theo lịch Julius: 2456294
  • Ngày âm lịch: 20/11/2012 ngày Đinh Mão tháng Nhâm Tý năm Nhâm Thìn
  • Mệnh ngày là Hỏa (lửa trong lò), mệnh tháng là Mộc (gỗ cây dâu), mệnh năm là Thủy (nước giữa dòng)
  • Ngày này đang ở trong tiết Đông Chí (giữa đông - kinh độ mặt trời là 280.43 độ)
  • Từ 23h đến 01h là giờ Canh Tý thần Tư Mệnh quản, giờ này là giờ Hắc Đạo, còn từ 01h đến 03h ....
  • Ngày này thì hướng Hỷ thần là Chính Nam, Tài thần là Chính Tây, Hạc thần là Chính Nam, giờ không vong tại Dậu, Hợi, Giờ tốt: Dần, Mão, Ngọ, Mùi
  •  Các sao tốt chiếu trong ngày này: Nguyện Đức Hợp, Thiên Thành...
  • Các sao xấu chiếu trong ngày này: Thiên Cương, Thiên Lại...
  • Các phần vạn sự A, B,C,D,E,F ...
  • ............................

Ngoài ra còn có thêm 3 phần là: Xem Giờ Sinh, Bát Trạch, Ngày Đặc Biệt Của Bạn:
  • Phần Xem Giờ Sinh được viết theo sách Ngọc Hạp Chánh Tông. Phần này bạn chỉ nên xem cho vui, đừng tin quá.
  • Phần Bát Trạch được xây dựng dựa theo sách Phong Thủy Ứng Dụng. Phần này ứng dụng cho việc bài trí nội thất, ngoại thất.
  • Phần Ngày Đặc Biệt là phần bạn nhập ngày mà bạn cần nhớ của mình vào, Lịch vạn niên khi chỉ tới ngày đó sẽ báo cho bạn. Ví dụ ngày sinh của bạn là 20/10/1984 Âm Lịch thì đến ngày 20/10 âm lịch của các năm sẽ hiện dòng nhắc sinh nhật của bạn.
Tuy nhiên bản Lịch Vạn Niên này chắc chắn không ít thì nhiều có chổ sẽ sai, nếu ai phát hiện lỗi sai sót thì comment dùm nha. Ngoài ra mong bà con bàn luận chi sẽ, góp ý để hoàn thành Lịch Vạn Niên này tốt hơn.

Ghi chú Lịch Vạn Niên này là file Excel có chứa các Macro nên bạn phải đưa chế độ bảo vệ của Excel về mức Low mới xem được.  Phần Bát Trạch, nếu bạn dùng thì phải dùng Excel 2007 trở lên, excel 2003 sẽ bị lỗi. 


TẢI LỊCH VẠN NIÊN MỚI NHẤT




Riêng phần tính giờ nước lên, nước xuống thì mình chưa có thuật toán tính, nên mục này bà con xem thận trọng nha. Ai có thật toán tính giờ con nước thì chỉ mình với.

Các bạn có thể thảm khảo bài viết: Cách Tính Giờ Âm Lịch để hiểu hơn về chương trình này

Còn đây là thuật toán:


Option Explicit ' TRAN TU LIEM
Const PI As Double = 3.14159265358979 ' Atn(1) * 4

Function jdFromDate(ByVal dd As Long, ByVal mm As Long, ByVal yy As Long) As Long
    Dim a As Double, y As Long, M As Long, jd As Long
    a = Fix((14 - mm) / 12)
    y = yy + 4800 - a
    M = mm + 12 * a - 3
    jd = dd + Fix((153 * M + 2) / 5) + 365 * y _
        + Fix(y / 4) - Fix(y / 100) + Fix(y / 400) - 32045
    If jd < 2299161 Then
        jd = dd + Fix((153 * M + 2) / 5) + 365 * y + Fix(y / 4) - 32083
    End If
    jdFromDate = jd
End Function

Function jdToDate(jd)
' doi ngay july thành ngay thuong
Dim a, b, c, d, e, M, Day, Month, Year
If jd > 2299160 Then
    a = jd + 32044
    b = Int((4 * a + 3) / 146097)
    c = a - Int((b * 146097) / 4)
 Else
    b = 0
    c = jd + 32082
End If
d = Int((4 * c + 3) / 1461)
e = c - Int((1461 * d) / 4)
M = Int((5 * e + 2) / 153)
Day = e - Int((153 * M + 2) / 5) + 1
Month = M + 3 - 12 * Int(M / 10)
Year = b * 100 + d - 4800 + Int(M / 10)
jdToDate = DateSerial(Year, Month, Day)

End Function

Function NewMoon(ByVal k As Long) As Double
    Dim T As Double, T2 As Double, T3 As Double, dr As Double
    Dim Jd1 As Double, M As Double, Mpr As Double
    Dim F As Double, C1 As Double, deltat As Double, JdNew As Double
    T = k / 1236.85 ' Time in Julian centuries from 1900 January 0.5
   T2 = T * T
    T3 = T2 * T
    dr = PI / 180
    Jd1 = 2415020.75933 + 29.53058868 * k + 0.0001178 * T2 - 0.000000155 * T3
    Jd1 = Jd1 + 0.00033 * Sin((166.56 + 132.87 * T - 0.009173 * T2) * dr)
    M = 359.2242 + 29.10535608 * k - 0.0000333 * T2 - 0.00000347 * T3
    Mpr = 306.0253 + 385.81691806 * k + 0.0107306 * T2 + 0.00001236 * T3
    F = 21.2964 + 390.67050646 * k - 0.0016528 * T2 - 0.00000239 * T3
    C1 = (0.1734 - 0.000393 * T) * Sin(M * dr) + 0.0021 * Sin(2 * dr * M)
    C1 = C1 - 0.4068 * Sin(Mpr * dr) + 0.0161 * Sin(dr * 2 * Mpr)
    C1 = C1 - 0.0004 * Sin(dr * 3 * Mpr)
    C1 = C1 + 0.0104 * Sin(dr * 2 * F) - 0.0051 * Sin(dr * (M + Mpr))
    C1 = C1 - 0.0074 * Sin(dr * (M - Mpr)) + 0.0004 * Sin(dr * (2 * F + M))
    C1 = C1 - 0.0004 * Sin(dr * (2 * F - M)) - 0.0006 * Sin(dr * (2 * F + Mpr))
    C1 = C1 + 0.001 * Sin(dr * (2 * F - Mpr)) + 0.0005 * Sin(dr * (2 * Mpr + M))
    If (T < -11) Then
        deltat = 0.001 + 0.000839 * T + 0.0002261 * T2 _
                - 0.00000845 * T3 - 0.000000081 * T * T3
    Else
        deltat = -0.000278 + 0.000265 * T + 0.000262 * T2
    End If
    JdNew = Jd1 + C1 - deltat
    NewMoon = JdNew
End Function

Function SunLongitude(ByVal jdn As Double) As Double
    Dim T As Double, T2 As Double, dr As Double, M As Double
    Dim L0 As Double, DL As Double, L As Double
    T = (jdn - 2451545) / 36525
        ' Time in Julian centuries from 2000-01-01 12:00:00 GMT
   T2 = T * T
    dr = PI / 180 ' degree to radian
   M = 357.5291 + 35999.0503 * T - 0.0001559 * T2 - 0.00000048 * T * T2
    L0 = 280.46645 + 36000.76983 * T + 0.0003032 * T2
    DL = (1.9146 - 0.004817 * T - 0.000014 * T2) * Sin(dr * M)
    DL = DL + (0.019993 - 0.000101 * T) * Sin(dr * 2 * M) _
        + 0.00029 * Sin(dr * 3 * M)
    L = L0 + DL ' true longitude, degree
   L = L * dr
    L = L - PI * 2 * (Fix(L / (PI * 2))) ' Normalize to (0, 2*PI)
   SunLongitude = L
End Function

Function getSunLongitude(ByVal dayNumber As Double, ByVal timeZone As Byte) As Long
    getSunLongitude = Fix(SunLongitude(dayNumber - 0.5 - timeZone / 24) / PI * 6)
End Function

Function getNewMoonDay(ByVal k As Long, ByVal timeZone As Long) As Long
    getNewMoonDay = Fix(NewMoon(k) + 0.5 + timeZone / 24)
End Function

Function getLunarMonth11(ByVal yy As Long, ByVal timeZone As Long) As Long
    Dim k As Long, off As Double, nm As Long, sunLong As Double
    off = jdFromDate(31, 12, yy) - 2415021
    k = Fix(off / 29.530588853)
    nm = getNewMoonDay(k, timeZone)
    sunLong = getSunLongitude(nm, timeZone) ' sun longitude at local midnight
   If (sunLong >= 9) Then
        nm = getNewMoonDay(k - 1, timeZone)
    End If
    getLunarMonth11 = nm
End Function


Function getLeapMonthOffset(ByVal a11 As Double, ByVal timeZone As Long) As Long
    Dim k As Long, last As Long, Arc As Long, I As Long
    k = Fix((a11 - 2415021.07699869) / 29.530588853 + 0.5)
    last = 0
    I = 1 ' We start with the month following lunar month 11
   Arc = getSunLongitude(getNewMoonDay(k + I, timeZone), timeZone)
    Do
        last = Arc
        I = I + 1
        Arc = getSunLongitude(getNewMoonDay(k + I, timeZone), timeZone)
    Loop While (Arc <> last And I < 14)
    getLeapMonthOffset = I - 1
End Function


Public Function KinhDoMatTroi(gio, phut, dd, mm, yy)
'tinh kinh ?o mat troi
Dim PI, a, y, M, T, jdn, L0, jd, c, theta, lambda
PI = 4 * Atn(1)
a = Int((14 - mm) / 12)
y = yy + 4800 - a
M = mm + 12 * a - 3
    jdn = dd + Int(((153 * M) + 2) / 5) + 365 * y + Int(y / 4) - Int(y / 100) + Int(y / 400) - 32045
    If jdn < 2299161 Then jdn = dd + Int((153 * M + 2) / 5) + 365 * y + Int(y / 4) - 32083
    jd = jdn + ((gio - 12) / 24) + (phut / 1440) - 7 / 24


T = (jd - 2451545#) / 36525
L0 = 280.46645 + 36000.76983 * T + 0.0003032 * T * T
M = (357.5291 + 35999.0503 * T - 0.0001559 * T * T - 0.00000048 * T * T * T) * PI / 180
c = ((1.9146 - 0.004817 * T - 0.000014 * T * T) * Sin(M)) + (0.01993 - 0.000101 * T) * Sin(2 * M) + 0.00029 * Sin(3 * M)
theta = L0 + c
lambda = theta - 0.00569 - 0.00478 * Sin((125.04 - 1934.136 * T) * PI / 180)
lambda = lambda - 360 * Int(lambda / 360)
KinhDoMatTroi = lambda

End Function













Function convertSolar2Lunar(dd, mm, yy, timeZone)

'Doi ngày duong dd/mm/yyyy ra ngày âm

Dim k, dayNumber, monthStart, a11, b11, lunarDay, lunarMonth, lunarYear, lunarLeap, diff, leapMonthDiff
dayNumber = jdFromDate(dd, mm, yy)
k = Int((dayNumber - 2415021.07699869) / 29.530588853)
monthStart = getNewMoonDay(k + 1, timeZone)
If monthStart > dayNumber Then monthStart = getNewMoonDay(k, timeZone)
a11 = getLunarMonth11(yy, timeZone)
b11 = a11

If a11 >= monthStart Then
    lunarYear = yy
    a11 = getLunarMonth11(yy - 1, timeZone)
 Else
    lunarYear = yy + 1
    b11 = getLunarMonth11(yy + 1, timeZone)
End If
lunarDay = dayNumber - monthStart + 1
diff = Int((monthStart - a11) / 29)
lunarLeap = 0
lunarMonth = diff + 11
If (b11 - a11) > 365 Then
    leapMonthDiff = getLeapMonthOffset(a11, timeZone)
    If diff >= leapMonthDiff Then
        lunarMonth = diff + 10
        If diff = leapMonthDiff Then lunarLeap = 1
    End If
End If
If lunarMonth > 12 Then lunarMonth = lunarMonth - 12

If (lunarMonth >= 11 And diff < 4) Then lunarYear = lunarYear - 1
 
convertSolar2Lunar = lunarDay & "/" & lunarMonth & "/" & lunarYear

End Function

Function THANGNODU(dd, mm, yy, timeZone)

'THANG NO DU

Dim k, dayNumber, monthStart, a11, b11, lunarDay, lunarMonth, lunarYear, lunarLeap, diff, leapMonthDiff
dayNumber = jdFromDate(dd, mm, yy)
k = Int((dayNumber - 2415021.07699869) / 29.530588853)
monthStart = getNewMoonDay(k + 1, timeZone)
If monthStart > dayNumber Then monthStart = getNewMoonDay(k, timeZone)
a11 = getLunarMonth11(yy, timeZone)
b11 = a11

If a11 >= monthStart Then
    lunarYear = yy
    a11 = getLunarMonth11(yy - 1, timeZone)
 Else
    lunarYear = yy + 1
    b11 = getLunarMonth11(yy + 1, timeZone)
End If
lunarDay = dayNumber - monthStart + 1
diff = Int((monthStart - a11) / 29)
lunarLeap = 0
lunarMonth = diff + 11
If (b11 - a11) > 365 Then
    leapMonthDiff = getLeapMonthOffset(a11, timeZone)
    If diff >= leapMonthDiff Then
        lunarMonth = diff + 10
        If diff = leapMonthDiff Then lunarLeap = 1
    End If
End If
If lunarMonth > 12 Then lunarMonth = lunarMonth - 12

If (lunarMonth >= 11 And diff < 4) Then lunarYear = lunarYear - 1
 
THANGNODU = getNewMoonDay(k + 1, timeZone) - getNewMoonDay(k, timeZone)

End Function

Function THANGNHUAN(dd, mm, yy, timeZone)

'THANG NHUAN

Dim k, dayNumber, monthStart, a11, b11, lunarDay, lunarMonth, lunarYear, lunarLeap, diff, leapMonthDiff
dayNumber = jdFromDate(dd, mm, yy)
k = Int((dayNumber - 2415021.07699869) / 29.530588853)
monthStart = getNewMoonDay(k + 1, timeZone)
If monthStart > dayNumber Then monthStart = getNewMoonDay(k, timeZone)
a11 = getLunarMonth11(yy, timeZone)
b11 = a11

If a11 >= monthStart Then
    lunarYear = yy
    a11 = getLunarMonth11(yy - 1, timeZone)
 Else
    lunarYear = yy + 1
    b11 = getLunarMonth11(yy + 1, timeZone)
End If
lunarDay = dayNumber - monthStart + 1
diff = Int((monthStart - a11) / 29)
lunarLeap = 0
lunarMonth = diff + 11
If (b11 - a11) > 365 Then
    leapMonthDiff = getLeapMonthOffset(a11, timeZone)

    THANGNHUAN = (leapMonthDiff + 10) Mod 12
End If

 


End Function






Function convertLunar2Solar(lunarDay, lunarMonth, lunarYear, lunarLeap, timeZone)

'Doi âm lich ra duong lich

Dim k, a11, b11, off, leapOff, leapMonth, monthStart
If (lunarMonth < 11) Then
    a11 = getLunarMonth11(lunarYear - 1, timeZone)
    b11 = getLunarMonth11(lunarYear, timeZone)
 Else
    a11 = getLunarMonth11(lunarYear, timeZone)
    b11 = getLunarMonth11(lunarYear + 1, timeZone)
End If
off = lunarMonth - 11
If (off < 0) Then off = off + 12

If (b11 - a11 > 365) Then
    leapOff = getLeapMonthOffset(a11, timeZone)
    leapMonth = leapOff - 2
    If (leapMonth < 0) Then leapMonth = leapMonth + 12
 
    If (lunarLeap <> 0 And lunarMonth <> leapMonth) Then
        convertLunar2Solar = Array(0, 0, 0)
    Else
        If (lunarLeap <> 0 Or off >= leapOff) Then off = off + 1
    End If
End If
k = Int(0.5 + (a11 - 2415021.07699869) / 29.530588853)
monthStart = getNewMoonDay(k + off, timeZone)
convertLunar2Solar = jdToDate(monthStart + lunarDay - 1)

End Function


Function Ngay(dd, mm, yy, timeZone)

'Doi ngày duong dd/mm/yyyy ra ngày âm: Ngay

Dim k, dayNumber, monthStart, a11, b11, lunarDay, lunarMonth, lunarYear, lunarLeap, diff, leapMonthDiff
dayNumber = jdFromDate(dd, mm, yy)
k = Int((dayNumber - 2415021.07699869) / 29.530588853)
monthStart = getNewMoonDay(k + 1, timeZone)
If monthStart > dayNumber Then monthStart = getNewMoonDay(k, timeZone)
a11 = getLunarMonth11(yy, timeZone)
b11 = a11

If a11 >= monthStart Then
    lunarYear = yy
    a11 = getLunarMonth11(yy - 1, timeZone)
 Else
    lunarYear = yy + 1
    b11 = getLunarMonth11(yy + 1, timeZone)
End If
lunarDay = dayNumber - monthStart + 1
diff = Int((monthStart - a11) / 29)
lunarLeap = 0
lunarMonth = diff + 11
If (b11 - a11) > 365 Then
    leapMonthDiff = getLeapMonthOffset(a11, timeZone)
    If diff >= leapMonthDiff Then
        lunarMonth = diff + 10
        If diff = leapMonthDiff Then lunarLeap = 1
    End If
End If
If lunarMonth > 12 Then lunarMonth = lunarMonth - 12

If (lunarMonth >= 11 And diff < 4) Then lunarYear = lunarYear - 1
 
Ngay = lunarDay
End Function
Function Thang(dd, mm, yy, timeZone)

'Doi ngày duong dd/mm/yyyy ra ngày âm: Thang

Dim k, dayNumber, monthStart, a11, b11, lunarDay, lunarMonth, lunarYear, lunarLeap, diff, leapMonthDiff
dayNumber = jdFromDate(dd, mm, yy)
k = Int((dayNumber - 2415021.07699869) / 29.530588853)
monthStart = getNewMoonDay(k + 1, timeZone)
If monthStart > dayNumber Then monthStart = getNewMoonDay(k, timeZone)
a11 = getLunarMonth11(yy, timeZone)
b11 = a11

If a11 >= monthStart Then
    lunarYear = yy
    a11 = getLunarMonth11(yy - 1, timeZone)
 Else
    lunarYear = yy + 1
    b11 = getLunarMonth11(yy + 1, timeZone)
End If
lunarDay = dayNumber - monthStart + 1
diff = Int((monthStart - a11) / 29)
lunarLeap = 0
lunarMonth = diff + 11
If (b11 - a11) > 365 Then
    leapMonthDiff = getLeapMonthOffset(a11, timeZone)
    If diff >= leapMonthDiff Then
        lunarMonth = diff + 10
        If diff = leapMonthDiff Then lunarLeap = 1
    End If
End If
If lunarMonth > 12 Then lunarMonth = lunarMonth - 12

If (lunarMonth >= 11 And diff < 4) Then lunarYear = lunarYear - 1
 
Thang = lunarMonth

End Function

Function Nam(dd, mm, yy, timeZone)

'Doi ngày duong dd/mm/yyyy ra ngày âm

Dim k, dayNumber, monthStart, a11, b11, lunarDay, lunarMonth, lunarYear, lunarLeap, diff, leapMonthDiff
dayNumber = jdFromDate(dd, mm, yy)
k = Int((dayNumber - 2415021.07699869) / 29.530588853)
monthStart = getNewMoonDay(k + 1, timeZone)
If monthStart > dayNumber Then monthStart = getNewMoonDay(k, timeZone)
a11 = getLunarMonth11(yy, timeZone)
b11 = a11

If a11 >= monthStart Then
    lunarYear = yy
    a11 = getLunarMonth11(yy - 1, timeZone)
 Else
    lunarYear = yy + 1
    b11 = getLunarMonth11(yy + 1, timeZone)
End If
lunarDay = dayNumber - monthStart + 1
diff = Int((monthStart - a11) / 29)
lunarLeap = 0
lunarMonth = diff + 11
If (b11 - a11) > 365 Then
    leapMonthDiff = getLeapMonthOffset(a11, timeZone)
    If diff >= leapMonthDiff Then
        lunarMonth = diff + 10
        If diff = leapMonthDiff Then lunarLeap = 1
    End If
End If
If lunarMonth > 12 Then lunarMonth = lunarMonth - 12

If (lunarMonth >= 11 And diff < 4) Then lunarYear = lunarYear - 1
 
Nam = lunarYear

End Function

Function Duongcongkynhat(dd, mm, yy, timeZone)

'Doi ngày duong dd/mm/yyyy ra ngày âm

Dim k, dayNumber, monthStart, a11, b11, lunarDay, lunarMonth, lunarYear, lunarLeap, NgayAm, diff, leapMonthDiff
dayNumber = jdFromDate(dd, mm, yy)
k = Int((dayNumber - 2415021.07699869) / 29.530588853)
monthStart = getNewMoonDay(k + 1, timeZone)
If monthStart >= dayNumber Then monthStart = getNewMoonDay(k, timeZone)
a11 = getLunarMonth11(yy, timeZone)
b11 = a11

If a11 >= monthStart Then
    lunarYear = yy
    a11 = getLunarMonth11(yy - 1, timeZone)
 Else
    lunarYear = yy + 1
    b11 = getLunarMonth11(yy + 1, timeZone)
End If
lunarDay = dayNumber - monthStart + 1
diff = Int((monthStart - a11) / 29)
lunarLeap = 0
lunarMonth = diff + 11
If (b11 - a11) > 365 Then
    leapMonthDiff = getLeapMonthOffset(a11, timeZone)
    If diff >= leapMonthDiff Then
        lunarMonth = diff + 10
        If diff = leapMonthDiff Then lunarLeap = 1
    End If
End If
If lunarMonth > 12 Then lunarMonth = lunarMonth - 12

If (lunarMonth >= 11 And diff < 4) Then lunarYear = lunarYear - 1
 
NgayAm = lunarDay & "/" & lunarMonth
Duongcongkynhat = ""

If NgayAm = "13/1" Or NgayAm = "11/2" Or NgayAm = "9/3" Or NgayAm = "7/4" Or NgayAm = "5/5" Or NgayAm = "3/6" Or NgayAm = "8/7" Or NgayAm = "29/7" Or NgayAm = "27/8" Or NgayAm = "25/9" Or NgayAm = "23/10" Or NgayAm = "21/11" Or NgayAm = "19/12" Then Duongcongkynhat = 1

End Function

Function TamNuongSat(dd, mm, yy, timeZone)

'Kiem tra ngay dd/mm/yyyy có phai ngay Tam Nuong Sat

Dim k, dayNumber, monthStart, a11, b11, lunarDay, lunarMonth, lunarYear, lunarLeap, TamNuong, diff, leapMonthDiff
dayNumber = jdFromDate(dd, mm, yy)
k = Int((dayNumber - 2415021.07699869) / 29.530588853)
monthStart = getNewMoonDay(k + 1, timeZone)
If monthStart >= dayNumber Then monthStart = getNewMoonDay(k, timeZone)
a11 = getLunarMonth11(yy, timeZone)
b11 = a11

If a11 >= monthStart Then
    lunarYear = yy
    a11 = getLunarMonth11(yy - 1, timeZone)
 Else
    lunarYear = yy + 1
    b11 = getLunarMonth11(yy + 1, timeZone)
End If
lunarDay = dayNumber - monthStart + 1
diff = Int((monthStart - a11) / 29)
lunarLeap = 0
lunarMonth = diff + 11
If (b11 - a11) > 365 Then
    leapMonthDiff = getLeapMonthOffset(a11, timeZone)
    If diff >= leapMonthDiff Then
        lunarMonth = diff + 10
        If diff = leapMonthDiff Then lunarLeap = 1
    End If
End If
If lunarMonth > 12 Then lunarMonth = lunarMonth - 12

If (lunarMonth >= 11 And diff < 4) Then lunarYear = lunarYear - 1
 

TamNuongSat = ""

If lunarDay = 2 Or lunarDay = 7 Or lunarDay = 13 Or lunarDay = 18 Or lunarDay = 22 Or lunarDay = 27 Then TamNuongSat = 1

End Function

Function NgayNguyetKy(dd, mm, yy, timeZone)

'Kiem tra ngay dd/mm/yyyy có phai ngay Nguyet Ky

Dim k, dayNumber, monthStart, a11, b11, lunarDay, lunarMonth, lunarYear, lunarLeap, TamNuong, diff, leapMonthDiff
dayNumber = jdFromDate(dd, mm, yy)
k = Int((dayNumber - 2415021.07699869) / 29.530588853)
monthStart = getNewMoonDay(k + 1, timeZone)
If monthStart >= dayNumber Then monthStart = getNewMoonDay(k, timeZone)
a11 = getLunarMonth11(yy, timeZone)
b11 = a11

If a11 >= monthStart Then
    lunarYear = yy
    a11 = getLunarMonth11(yy - 1, timeZone)
 Else
    lunarYear = yy + 1
    b11 = getLunarMonth11(yy + 1, timeZone)
End If
lunarDay = dayNumber - monthStart + 1
diff = Int((monthStart - a11) / 29)
lunarLeap = 0
lunarMonth = diff + 11
If (b11 - a11) > 365 Then
    leapMonthDiff = getLeapMonthOffset(a11, timeZone)
    If diff >= leapMonthDiff Then
        lunarMonth = diff + 10
        If diff = leapMonthDiff Then lunarLeap = 1
    End If
End If
If lunarMonth > 12 Then lunarMonth = lunarMonth - 12

If (lunarMonth >= 11 And diff < 4) Then lunarYear = lunarYear - 1
 

NgayNguyetKy = ""

If lunarDay = 5 Or lunarDay = 14 Or lunarDay = 23 Then NgayNguyetKy = 1

End Function

Thân ái
Blog Trần Tứ Liêm

Tăng bổ tuyển trạch thông thư quảng ngọc hạp ký

By Trần Tứ Liêm on Thứ Ba, 1 tháng 11, 2022

TĂNG BỔ TUYỂN TRẠCH THÔNG THƯ 
QUẢNG NGỌC HẠP KÝ
Sách Hán Nôm - Bản khắc

Lịch vạn niên 2023 excel - PDF Âm Dương

By Trần Tứ Liêm on Thứ Sáu, 26 tháng 8, 2022






Lịch Excel 2023 ở đây, bạn có thể tải về và sử dụng tùy mục đích:
DOWNLOAD LỊCH EXCEL 2023

Tác giả: Trần Tứ Liêm

Nhà xuất bản: Không

Loại file: Excel, PDF, corel, photoshop
(mới cập nhật)

Lịch này được xuất bản từ lịch số thông minh chạy trên file excel tự động. Bạn có thể tải về dùng ở đây.

Nếu bạn muốn tải file PDF lịch năm 2023 hãy nhấp vào từng tháng phía dưới:

Tháng 1Tháng 2Tháng 3Tháng 4Tháng 5Tháng 6Tháng 7Tháng 8Tháng 9Tháng 10Tháng 11Tháng 12

Tải các bộ lịch khác:

Để hiểu rõ về lịch excel 2023 mời bạn xem phần nội bên dưới:

NỘI DUNG LỊCH EXCEL 2023

Lịch tháng 1 năm 2023 Quý Mão
lịch tháng 1 năm 2023 Quý Mão
Lịch tháng 2 năm 2023 Quý Mão
Lịch tháng 2 năm 2023 Quý Mão
Lịch tháng 3 năm 2023 Quý Mão
Lịch tháng 3 năm 2023 Quý Mão
Lịch tháng 4 năm 2023 Quý Mão
Lịch tháng 4 năm 2023 Quý Mão
Lịch tháng 5 năm 2023 Quý Mão
Lịch tháng 5 năm 2023 Quý Mão
Lịch tháng 6 năm 2023 Quý Mão
Lịch tháng 6 năm 2023 Quý Mão
Lịch tháng 7 năm 2023 Quý Mão
Lịch tháng 7 năm 2023 Quý Mão
Lịch tháng 8 năm 2023 Quý Mão
Lịch tháng 8 năm 2023 Quý Mão
Lịch tháng 9 năm 2023 Quý Mão
Lịch tháng 9 năm 2023 Quý Mão
Lịch tháng 10 năm 2023 Quý Mão
Lịch tháng 10 năm 2023 Quý Mão
Lịch tháng 11 năm 2023 Quý Mão
Lịch tháng 11 năm 2023 Quý Mão
Lịch tháng 12 năm 2023 Quý Mão
Lịch tháng 12 năm 2023 Quý Mão


TÀI LIỆU KHÁC

Trên website bcs.bibon.xyz có chứa các tài kiệu liên quan như bên dưới, mời bạn tham khảo thêm. Hy vọng nó có ý nghĩa với bạn:Sách 555 món ăn Việt Nam
Lịch 2023bách cátLịch Excel 2023
Loại tài liệu:

Keyword: lịch | lịch excel | lịch excel 2023 | tải lịch 2023 | lịch âm dương năm 2023 | lịch âm 2023 | lịch âm 2023 | tải lịch 2023 | lịch năm quý mão | lịch excel quý mão | lich excel 2023 | dowload lich 2023 | lich quy mao | lịch quý mão

Lịch vạn niên excel năm 2022 (xls, pdf)

By Trần Tứ Liêm on

Tải file excel lịch tháng năm 2022 Nhâm Dần (âm dương)


Tải lịch excel 2023: DOWNLOAD

Lịch này được xuất tự động từ bộ lịch vạn niên excel của Trần Tứ Liêm, mời bạn tham khảo:
LICH-VAN-NIEN-EXCEL-V1.2Tải xuốngLịch excel tháng 1 năm 2022 Nhâm Dần – Âm DươngLịch excel tháng 1 năm 2022 Nhâm Dần – Âm Dương
Lịch excel tháng 2 năm 2022 Nhâm Dần – Âm DươngLịch excel tháng 3 năm 2022 Nhâm Dần – Âm DươngLịch excel tháng 4 năm 2022 Nhâm Dần – Âm DươngLịch excel tháng 5 năm 2022 Nhâm Dần – Âm DươngLịch excel tháng 6 năm 2022 Nhâm Dần – Âm DươngLịch excel tháng 7 năm 2022 Nhâm Dần – Âm DươngLịch excel tháng 8 năm 2022 Nhâm Dần – Âm DươngLịch excel tháng 9 năm 2022 Nhâm Dần – Âm DươngLịch excel tháng 10 năm 2022 Nhâm Dần – Âm DươngLịch excel tháng 11 năm 2022 Nhâm Dần – Âm DươngLịch excel tháng 12 năm 2022 Nhâm Dần – Âm Dương

Sách Thông Thư

By Trần Tứ Liêm on Thứ Năm, 2 tháng 4, 2020

Sách thông thư triều Nguyễn

SÁCH THÔNG THƯ, SACH THONG THƯ, THÔNG THƯ, THONG THƯ

SÁCH THÔNG THƯ

Xuất bản bởi Phúc Văn Đường tàng bản năm 1926
Là sách khắc in
Gọi tắt là SÁCH THÔNG THƯ TRIỀU NGUYỄN
Đây là cuốn gối đầu giường cho ai hành nghề xem ngày tháng

Bản này được dịch từ bản Ngoc Hạp Toản Yếu Thông Dụng, có nhiều lỗi đánh máy


DOWNLOAD SÁCH THÔNG THƯ PDF

Bạn có thể tải qua các đường link:

Nếu không tải được sách hảy thử lại tại hosting mediafire:
http://www.mediafire.com/download/jc33a27ijciyagh/42_thong_thu.pdf

Nếu bạn đang nghiên cứu về thuật xem ngày, đừng bỏ qua bảng liệt kê các sách này:

BẢNG LIST CÁC SÁCH HAY XEM NGÀY

LỊCH VẠN NIÊN NĂM 2020 FILE EXCEL PDF

By Trần Tứ Liêm on Thứ Sáu, 20 tháng 9, 2019


Bạn muốn tải lịch vạn niên năm 2020?


Blog TTL thích tìm hiểu về lịch, nay chĩa sẽ cùng công đồng ta bộ lịch năm 2020 bằng EXCEL để anh em chỉnh sửa tùy nhu cầu mà sử dụng, ngoài ra, còn có lịch file hình và Lịch vạn sự file PDF Scan:

TẢI LỊCH VẠN NIÊN 2020 FIEL EXCEL


Đây là bản lịch vạn niên năm 2020 bằng EXCEL được xuất từ file lập trình tự động (Xem chi tiết lịch này ở đây). Còn bạn đang quá trình học thuật tuyển trạch, hãy xem các tài liệu: xem ngày

File lịch 2020 âm dương excel này có thể giúp các bạn nhiều thứ, như soạn cho mình những ngày đặc biệt rồi in ra sử dụng chẳng hạn... Các nhà thiết kế thì chèn vào hồ sơ, các nhà quản lý thì dùng lịch này để quản lý công việc theo thời gian. Nó có ý nghĩa nhiều cho nhiều công ty hoặc cá nhân đấy ạ! Bạn hãy tải lịch âm dương về nhé, sử dụng các đường Link bên dưới:

Yêu cầu nhỏ, bạn hãy LIKE mới tải LỊCH 2020 nhé!  Đã có bản lịch mới, hãy tải ở đây: Lịch năm 2021 - lịch 2022 - lịch 2023

Tải file PDF

Tải file EXCEL

Tải file EXCEL
Hy vọng các file trên có ý nghĩa với bạn!

Nếu bạn thích về Lịch hãy đăng ký kênh Youtube để xem các Video
HÌNH ĐỘNG VUI

XEM LỊCH VẠN NIÊN EXCEL NĂM 2020

LỊCH VẠN SỰ THÁNG 1 NĂM 2020
 LỊCH VẠN SỰ THÁNG 1 NĂM 2020

LỊCH VẠN SỰ THÁNG 2 NĂM 2020
 LỊCH VẠN SỰ THÁNG 2 NĂM 2020

LỊCH VẠN SỰ THÁNG 3 NĂM 2020
 LỊCH VẠN SỰ THÁNG 3 NĂM 2020

LỊCH VẠN SỰ THÁNG 4 NĂM 2020
 LỊCH VẠN SỰ THÁNG 4 NĂM 2020

LỊCH VẠN SỰ THÁNG  5 NĂM 2020
 LỊCH VẠN SỰ THÁNG  5 NĂM 2020

LỊCH VẠN SỰ THÁNG 6 NĂM 2020
 LỊCH VẠN SỰ THÁNG 6 NĂM 2020

LỊCH VẠN SỰ THÁNG 7 NĂM 2020
 LỊCH VẠN SỰ THÁNG 7 NĂM 2020

LỊCH VẠN SỰ THÁNG 8 NĂM 2020
 LỊCH VẠN SỰ THÁNG 8 NĂM 2020

LỊCH VẠN SỰ THÁNG 9 NĂM 2020
 LỊCH VẠN SỰ THÁNG 9 NĂM 2020

LỊCH VẠN SỰ THÁNG 10 NĂM 2020
 LỊCH VẠN SỰ THÁNG 10 NĂM 2020

LỊCH VẠN SỰ THÁNG 11 NĂM 2020
 LỊCH VẠN SỰ THÁNG 11 NĂM 2020

LỊCH VẠN SỰ THÁNG 12 NĂM 2020
LỊCH VẠN SỰ THÁNG 12 NĂM 2020

LỜI CUỐI BÀI VIẾT NÀY


  • Bạn tải lịch về được chưa?
  • Nó có giúp gì cho bạn không?
  • Bạn có muốn xem bài viết khác của tôi không?

Lịch âm dương vạn niên TTL-EXCEL file được nhiều người hành nghề chọn ngày tốt sử dụng, bạn có biết?
Đây là một file dụng lượng nhỏ nhưng đốt biết bao thời gian của mình, từ lúc chia sẽ đến nay, có gần triệu lượt tải rồi đó các bạn ạ: Xem chi tiết LỊCH VẠN NIÊN TTL-EXCEL

Mời bạn đón xem các bài viết về tử vi của học trò (Đang nghiên cứu và học hỏi nên nhận vậy, nhưng rất thích): XEM TỬ VI NĂM 2020

HÀNH TRÌNH VỀ PHƯƠNG ĐÔNG

By Trần Tứ Liêm on Thứ Bảy, 26 tháng 12, 2015

Mời bạn nghiên cứu một cuốn sách cực hay "HÀNH TRÌNH VỀ PHƯƠNG ĐÔNG", nhiều học giã đã thừa nhận nó đã làm thay đổi nhận thức cho rất nhiều người. Có thật không thì hãy đọc đi, hoặc nghe đã nha. TTL Blog đã nghe khoảng 1000 lần rồi, mổi lần nghe lại hiểu thêm một thứ mới, thật là kỳ diệu!

HÀNH TRÌNH VỀ PHƯƠNG ĐÔNG SÁCH NÓI


Hôm trước được gặp một bậc thầy ở lĩnh vực lĩnh vực Phong Thủy Tâm Linh và củng là một nhà khoa học được phong tặng học hàm, đã từng là hiệu trưởng của một trường Đại học danh tiếng. Trong buổi nói chuyện Bác đã hỏi mình "Liêm đã đọc cuốn Hành Trình Về Phương Đông chưa?".

Mình trả lời thật "Cháu đã nghe tên nhưng chưa đọc bao giờ".

Thế là Bác ấy giới thiệu về cuốn sách, mình nghe là ngiền luôn rồi. Bác giới thiệu về nội dung và tác giả, dịch giả của cuốn sách, nhưng phần gây ấn tượng nhất đó là Dịch Giả. Dịch Giả đó là Nguyên Phong, người ấy đên nay không biết đó là ai, mà dịch hay như vậy. Người đời đang đi tìm mà chưa tìm được và cuốn sách lại được dịch ngược lại từ tiếng Việt thành tiếng Anh.

Xin nói thêm là cuốn sách này xuất bản năm 1924 nhé bạn, lúc đó Việt Nam thế nào?

Lời nhận xét về cuốn sách Hành trình về phương đông


Đây là một cuốn sách cực hay ở đầy đủ các góc độ:
  • Chuyên sâu: về triết học về mọi khoa học hiện đại (toán học, vật lý, sinh, hóa ..., thiên văn), được kể chuyện bởi vị giáo sư.
  • Về khoa học phương đông và tâm linh, đặt tôn giáo trên góc độ khách quan, những người như Giê su, hay Phật Tổ, Khổng tử đều xem là những ngài "Giáo chủ".
  • Về mặt ngôn từ: ngôn từ đúng với ngôn từ của những nhà nho học trước đây, cô đọng và mạnh mẽ
  • Về nội dung: Thấy hay, và còn phải nghiên cứu, và vén màn cho một nền minh triết đang ẩn nấp do tư duy cổ hủ của chính bản thân.

Hành trình về phương đông xát muối những người làm nghề Sư


Những ai gọi là "làm nghê sư" thì nghe video này khác gì bị xát muối!
Nhưng những ai đúng gọi là "tu" thì là cả một chân trời!

Blog TTL xin mạn phép bày tỏ trên quan điểm cá nhân, xúc phạm xin thứ lỗi!


HÀNH TRÌNH VỀ PHƯƠNG ĐÔNG

Nếu bạn muốn tìm hiểu ban đầu về cuốn sách này, vui lòng nghe lời giới thiệu từ Video này:

Sách Ngọc Hạp Toản Yếu Thông Dụng

By Trần Tứ Liêm on Thứ Hai, 10 tháng 3, 2014

Sách Ngọc Hạp Toản Yếu Thông Dụng

Tên sách
玉匣攢要通用
Nơi xuất bản
Phúc Văn Đường tàng bản
Năm xuất bản
保大元年
Bảo Đại nguyên niên
1926
Số trang
73
Kiểu tài liệu
Khắc in

Tóm tắt

“Cách xem tuổi, xem ngày, xem vận niên, xem sao, xem ngũ hành, bói thẻ…để đoán biết việc tốt, xấu, sống lâu hay chết yểu, ngày nào nên đi buôn, ngày nào nên xuất quân, ngày nào nên cưới xin…”
Nguồn: Viện nghiên cứu Hán Nôm, Học viện Viễn Đông Bác Cổ Pháp. Di sản Hán Nôm Việt Nam thư mục đề yếu tập 3. Hà Nội: Nhà xuất bản Khoa học xã hội, 1993: trang 835.

1

Bát trạch Minh Cảnh - Kim Oanh Ký

By Trần Tứ Liêm on Thứ Sáu, 11 tháng 1, 2013

Chào bạn đến với bài viết giới thiệu sách trên Blog TTL

Giới thiệu về sách Bát Trạch Minh Cảnh 


Sách Kim Oanh Ký còn có tên là Bát trạch Minh Cảnh của Tác Giả Thái Kim Oanh, gồm:
  • Bát môn thần khóa.
  • Bát trạch minh cảnh
  • Bát tự Lữ tài
  • Bát lãm quần thơ 

Bát trạch Minh Cảnh - Kim Oanh Ký


Mình thích viết Blog, tìm hiểu Tử Vi, Phong Thủy, Kiến Trúc, nghiên cứu Lịch vạn niên, đọc sách tùm lum, hay chia sẽ kiến thức.

QUẢNG CÁO

đặc sản

BẢN ĐỒ BLOG

Xem tử vi 2024

xem tử vi năm 2024

Xem nhiều nhất

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

Bài viết theo thời gian

SƠ ĐỒ BLOG

Bài Nỗi Bật

Tin mới nhất - VnExpress RSS

Blog Bi Bon

Bách Cát Shop

Kho Hàng Giá Sỉ

Dịch Vụ Sửa Nhà

Thảo Mộc Thái Phong

Đặc Sản Shop

Shop Bi Bon

Tổng số lượt xem trang