CHỌN TUỔI XÔNG NHÀ - XÔNG ĐẤT ĐẦU NĂM 2016
Thứ Năm, 24 tháng 12, 2015
Thứ Tư, 23 tháng 12, 2015
Bộ Gia Phả Họ Trần Đăng soạn thảo và hoàn thành tháng 7-2015
Đây là một dự án làm việc vất vả và mất rất nhiều thời gian của Đồng tộc, các soạn giả. Đặc biệt là Cha của mình, ghi chép và tập hợp mang tính chất ban đầu và ghi chép hoàn toàn bằng tay.
Còn mình thì mất gần một năm mới hoàn thành từ các dữ liệu của Cha và các bản viết tay gửi!
- Lấy cái thành kính với Tổ tiên cội nguồn làm động lực
- Lấy cái Hỷ - Hạnh cho con cháu hôm nay và mai sau mà chép lời son sắt
- Lấy cái Tâm mà cần mẫn lập thành
Hình chụp Gia phả họ trần trước khi giao về cho Họ
Đọc thêm »
Thứ Năm, 10 tháng 12, 2015
HÀNH TRÌNH VỀ PHƯƠNG ĐÔNG
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?
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?
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:
Đọc thêm »
Chủ Nhật, 6 tháng 12, 2015
Giờ Âm Lịch Việt Nam
Trong cuộc sống có nhiều người không biết hay hỏi nhau là:
Giờ Tý là mấy giờ?
Giờ Ngọ là mấy giờ?
..............................?
Bình thường thì được trả lời là:
Giờ Tý là 23h đến 1h sáng
Giờ Ngọ là lúc 11h đến 13h chiều
...................
Chính những câu hỏi đó mình đã hỏi lúc còn nhỏ, bởi sự tò mò rằng: Tại sao đã có đồng hồ để đo thời gian rồi mà người ta vẫn cứ giờ Tý, Sửu... để làm các việc gì đó.
Đúng rồi bạn ạ! bây giờ người ta vẫn sử dụng 2 loại đơn vị đo thời gian của một ngày đó là:
- Giờ pháp lịch Việt Nam: Sử dụng theo quy chuẩn quốc tế lấy múi giờ là GMT+7, hay còn gọi là giờ Hà Nội. Một ngày có 24h, mỗi giờ là 60h
- Giờ âm lịch: một ngày được chia thành 12 giờ, mỗi giờ lấy tên một con giáp, bắt đầu từ giờ Tý rồi đến Sửu, Dần Mão Thìn Tỵ Ngọ Mùi Thân Dậu Tuất Hợi. Ban đêm được được gọi là Canh. Ví dụ Canh 1, Canh Hai... đến Canh 5
Đi vào vấn đề chính nhé! đó là quy đổi giữa giờ Pháp Lịch và giờ Âm Lịch, hãy giải quyết câu hỏi này trước:
Giờ Ngọ bắt đầu từ mấy giời và kết thúc mấy giờ?
Để nhìn lại bản chất của hai đơn vi đo thời gian ở trên ta có nhận xét như sau:
- Giờ Pháp Lịch lấy mốc thời theo Kinh độ của quả đất là kính tuyến 7, vì vậy có sự liên quan đến vị trí địa lý.
- Giờ âm lịch: ngày trước các bậc tiền nhân xác định bằn giờ chính ngọ là lúc Mặt trời đứng bóng rồi suy ra các giời khác. Như vậy giờ âm lịch có liên quan tới tính thiên văn.
Ví dụ 2: ngày 01/01/2015 tại TP. HCM () Mặt Trời mọc 6h11, lặn: 17h41, Chính Ngọ lúc 11h56
Như vậy ta suy được bảng giờ âm lịch:
- - Tại Đảo Phú Quốc: Giờ Tý: 23h07-1h07, Sửu: 1h07-3h07....
- - Còn tại TPHCM: Giờ Tý: 22h56-0h56, Sửu: 0h56-2h56...
Kết quả cho ta thấy bảng giờ ở hai vị trí khác nhau.
Có vẻ phức tạp phải không bạn?
Vậy phương pháp xác định giờ âm lịch thế nào cho đúng?
CÁCH XÁC ĐỊNH BẢNG GIỜ ÂM LỊCH
CÁCH 1: SỬ DỤNG CHƯƠNG TRÌNH LỊCH VẠN NIÊN EXCELĐây là chương trình mình soạn ra, được chạy trên cở sở thuật toán thiên văn, bạn tải về và vào mục cài đặt để sét vị trí Kinh Độ, Vỹ Độ theo hướng dẫn ở trong đó.
Địa chỉ tải: http://trantuliem.blogspot.com/2013/01/lich-van-nien-ttl-excel.html
Tải dự phòng: http://nhaban.today/wp-content/uploads/2014/12/LICH-VAN-NIEN-EXCEL-V1.0.xls
Chương trình chỉ chạy được trên máy tính và phải có Microffice EXCE.
CÁCH 2: SỬ DỤNG CÁCH TÍNH GIỜ CHÍNH NGỌ HỒ NGỌC ĐỨC
Sử dụng lịch của Hồ Ngọc Đức để xác định giờ Chính Ngọ sau đó bạn phải tự tính ra các giờ khác. Xem theo đường link này:
http://www.informatik.uni-leipzig.de/~duc/amlich/vncal.html
CÁCH 3: HƯỚNG DẪN BẠN TỰ TÍNH
Cách tính này bắt buộc bạn phải có dữ liệu đầu vào là giờ mặt trời lặn và mặt trời mọc, bạn có thể tìm các dữ liệu này ở nhiều nơi ví dụ:
Trên blog lịch treo tường.
Trên Yahoo thời tiết: https://weather.yahoo.com/
Hoặc bạn gõ tren google với từ khóa: "sunrise and sunset"
Ta tiến hành tìm giờ chính ngọ ngày 01/01/2015 tại TP. HCM () từ 2 dữ liệu: Mặt Trời mọc 6h11, lặn: 17h41.
- Mặt trời mọc phú thứ: a = 6x60+11 = 371
- Mặt trời lặn phút thứ: b = 17x60+41 = 1061
- Mặt trời chính ngọ ở phút thứ: c = (a+b):2 = (371+1061):2 = 716
- Đổi kết quả này thành giờ phút: chia c cho 60, phần nguyên là giờ, phân dư là phú:
Lấy 716 chia cho 60: được phần nguyên: 11, được phần dư là 56
Kết quả: Chính ngọ ngày 01/01/2015 tại TPHCM là 11 giờ 56 phút trùng với kết quả trong ví dụ 2 ở trên.
Lưu ý: phương pháp này là tương đối trong thuật toán thiên văn họ không tính thế này.
Tổng quát lại:
Khi chúng ta không quan tâm tới yếu tố thời gian âm lịch thì vấn đề này chẳng có ý nghĩa gì. Còn khi bạn đã đọc đến đây và quan tâm thì nó là một vấn đề cốt lõi trong văn hóa và những việc tâm linh. Những ví dụ sau có thể bạn hình dung được một số góc cạnh:
Chọn giờ để khâm liệm, nếu bạn chọn nhầm giờ vào tứ hành xung, trùng tang...? Các vấn đề cưới hỏi, động thổ... củng như vậy.
Xem lá số tử vi: 70% khó khăn của tử vi đó chính là xác định giờ sinh, khi xác định được giờ sinh mọi việc thường dễ dàng hơn.
....
Trong sách Bát Trạch Minh Cảnh của Thái Kim Oanh có phần trình bày đầu tiên là phần hướng dẫn chọn giờ âm lịch, tuy nhiên theo mình là sai nhé bạn!
Tôi nghỉ rằng bạn đọc quan tâm về lĩnh vực này sẽ khó khăn để hiểu bài viết. TTL Blog gợi ý cho các bạn hãy tải chương trình của tôi về và tham khảo các kết quả của các ngày bình thường, các ngày đặc biệt... để có nhận định chung hơn, sau đó cùng tìm hiểu nhé!
Các bạn có thể xem các bài viết liên quan do mình viết:
Đọc thêm »
Thứ Hai, 16 tháng 11, 2015
LỊCH VẠN NIÊN TTL-EXCEL
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ỉnh sử và cập nhật lại ngày 28/8/2015)
Bản dùng thử 30 ngày
Bản đồ sao được nhúng vào lịch |
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, và 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
http://www.mediafire.com/download/a68o25pg2i10so3/lich+van+nien+excel+v1.1.rar
(Đã chỉnh sử và cập nhật lại ngày 28/08/2015)
Bản dùng thử 30 ngày
(Đã chỉnh sử và cập nhật lại ngày 28/08/2015)
Bản dùng thử 30 ngày
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
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
NIÊN | LỊCH VẠN NIÊN | LICH VẠN NIÊN 2013
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
NIÊN | LỊCH VẠN NIÊN | LICH VẠN NIÊN 2013
Thứ Ba, 3 tháng 11, 2015
Thứ Tư, 16 tháng 9, 2015
LỊCH VẠN SỰ 2016
TẢI LỊCH VẠN SỰ 2016
TTL Blog chia sẽ các bộ lịch giúp bạn tra khảo ngày tháng của năm 2016.
- Lịch vạn niên excel 2016 và các năm khác: DOWNLOAD
Xem thêm:
- Lịch theo tháng 2016 file PDF: DOWNLOAD
- Lịch vạn sự 2016 SCAN: chưa có
Tử vi 2016
Lịch vạn niên excel
Từ khóa: Lịch vạn sự 2016, lịch vạn sự 2016 scan, lịch vạn sự 2016 pdf, sách lịch vạn sự 2016
Đăng ký:
Bài đăng (Atom)