Thứ Ba, 2 tháng 8, 2016
Thứ Hai, 27 tháng 6, 2016
Posted by Lan
with No comments
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)
Link dự phòng:
http://chuyennha.today/wp-content/uploads/2016/06/LICH-VAN-NIEN-EXCEL-V1.2-1.xls
Link dự phòng 2:
(Đã chỉnh sử và cập nhật lại ngày 23/6/2016)
Tải file hướng dẫn
http://chuyennha.today/wp-content/uploads/2016/06/HUONG-DAN-SD-LICH-VAN-NIEN.pdf![]() |
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
Posted in NGHIÊN CỨU PHONG THUỶ, Phong Thủy, Sách, Sách Phong Thủy, TỬ VI, Xem ngay tháng
Thứ Tư, 15 tháng 6, 2016
Thứ Năm, 2 tháng 6, 2016
Posted by Lan
with No comments
Posted in Ngô Tằng Giao, Phật Pháp
Posted by Lan
with No comments

1
GRANDMOTHER
Grandmother you are like
a patchwork quilt
So cozy and warm.
Just the smell of coffee
Reminds me of your wisdom
and charm.
I know I can always come to you
When lost or alone.
For you always comfort me
And make me feel at home.
You are the silver lining
of a cloudy day.
And I know whom can trust
when clouds blow my way.
Grandmother, your hugs and kisses
Will be stored in my heart each day.
a patchwork quilt
So cozy and warm.
Just the smell of coffee
Reminds me of your wisdom
and charm.
I know I can always come to you
When lost or alone.
For you always comfort me
And make me feel at home.
You are the silver lining
of a cloudy day.
And I know whom can trust
when clouds blow my way.
Grandmother, your hugs and kisses
Will be stored in my heart each day.
Anonymous
BÀ
Bà như một chiếc chăn bông
Bao ngoài nhiều mảnh vô cùng vui tươi
Ấm êm thoải mái tuyệt vời.
Mỗi khi ngửi thấy được mùi cà phê
Là con lại nhớ Bà ghê
Trăm đường tài giỏi, muôn bề dễ thương.
Khi buồn chán, lúc cô đơn
Con luôn tìm tới, Bà thường giúp con
Lựa lời an ủi luôn luôn
Khiến con cảm thấy không còn chơi vơi.
Bà là ánh chớp sáng ngời
Trong ngày u ám bầu trời mù mây.
Và con tin tưởng Bà ngay
Đường con vững bước dù đầy sương sa.
Bà ơi con rất yêu Bà
Tay Bà ôm ấp thiết tha vô vàn
Nụ hôn Bà cũng nồng nàn
Lòng con ghi khắc chứa chan mỗi ngày.
Tâm Minh Ngô Tằng Giao
chuyển ngữ
chuyển ngữ
Posted in Ngô Tằng Giao, Phật Pháp
Thứ Ba, 22 tháng 3, 2016
Posted by Lan
with No comments


Khuôn viên trường Đại học SPKT TPHCM lúc 6 giờ sáng loa phát thanh của thành đoàn luôn mở các bài hát của anh, sáng nào củng vậy, đó là những khoảng thời gian sinh viên cách đây đã hơn 10 năm khi tâm hồn chuẩn bị nẩy nầm. Tôi không sành về âm nhạc nhưng khi được nghe nhạc của anh là tôi lại tiếp nhân được một tư tưởng, một tinh thần đá, có thêm sức mạnh và tôi lại không muốn an nhàn nghe thêm nữa.
Âm nhạc của anh có sự khác biệt với các loại âm nhạc khác. Tôi chỉ nghe nhạc của anh trong lúc khó khăn, rối rắn về mặt tinh thần và chỉ nghe không quá 5 phút. Bởi vỉ nghe xong một đoạn nhạc là đủ năng lượng và tinh thần để hành động, để làm việc tiếp. Đủ để quay lại với cuộc sống thực tại "Lời hứa ghi trong tim mình - Vẫn bước đi hiên ngang đầu ngẫng cao"
Xin cảm ơn Bức Tường, cảm ơn anh Trần Lập đã cho cuộc sống chúng tôi thêm chút Lửa!
Hôm nay không được đứng trước linh cửu để tiễn đưa anh về nơi anh nghĩ cuối cùng. Nhưng qua bài viết này tôi xin bày tỏ sự tiếc thương và chúc anh về nơi suối vàng an giấc ngàn thu. Xin gửi đến gia quyến lời thăm hỏi, chia buồn sâu sắc!
Blog Trần Tứ Liêm
Thứ Ba, 8 tháng 3, 2016
Posted by Lan
with No comments
Chia sẽ theme làm Web rao vặt WordPess
Đặc trưng Theme:
Mời bạn xem bản Demo: Nhà Bán Hôm Nay


Bạn có thể tải các theme blogsot khác do TTL Blog chia sẽ:
Đặc trưng Theme:
- Thiết kế đẹp
- Theme SEO tốt
- Tích hợp tính năng Rao Vặt chuyên nghiệp
- Code theme này ứng dụng nhiều trong Web Nhà Đất - Bất Động Sản
Mời bạn xem bản Demo: Nhà Bán Hôm Nay

Download themme rao vặt có trả phí
Xem hình chụp theme wordpess bản mobile:

Posted in Thủ Thuật Blog
Thứ Hai, 22 tháng 2, 2016
Posted by Lan
with No comments
Xem tướng tay là nghệ thuật cổ xưa có nguồn gốc từ Ấn Độ và Trung Quốc. Nó là một phần của chiêm tinh học Ấn Độ giáo và sau đó được phổ biến rộng rãi trong các cuốn sách Kinh Dịch của Trung Quốc. Sau này, Aristole đã truyền rộng những kiến thức này ở Châu Âu và Tây Á.

Trên thực tế vẫn tồn tại những quan điểm trái ngược về xem tướng tay. Nhiều người cho rằng đó là phi khoa học và nhanh chóng loại bỏ nó.
Tuy nhiên, cũng có nghiên cứu chỉ ra rằng việc xem xét bàn tay không chỉ giúp hiểu thêm về sức khỏe mà còn biết được tính cách của mỗi người. Hiện nay vẫn có rất nhiều người tỉ mỉ quan sát sự thay đổi của đường chỉ tay nhằm hiểu hơn về con người và vận mệnh của chính mình.

Giải mã bí ẩn đường chỉ tay chữ M
Điều đáng chú ý là sự xuất hiện của chữ M trong lòng bàn tay. Nó được hình thành bởi các đường chỉ tay tâm đạo, trí đạo và sinh đạo. Tướng tay này rất hiếm, không phải ai cũng có được. Nhiều chuyên gia trong lĩnh vực xem tướng tay nhận định, chủ nhân của bàn tay có chữ M là người vô cùng đặc biệt.
Người có chữ M trong lòng bàn tay thường là nhà lãnh đạo tuyệt vời và có sự nghiệp phát triển rực rỡ. Được biết, khá nhiều nhân vật nổi tiếng trong lịch sử, bao gồm nhà lãnh đạo, tiên tri đều có dấu hiệu này trên bàn tay.
Bên cạnh đó, nếu lòng bàn tay bạn có chữ M, chứng tỏ bạn tài năng, gặp nhiều may mắn trong cuộc sống. Hơn thế, bạn có trực giác nhạy bén, tài kinh doanh và lãnh đạo thiên bẩm.
Những người có tướng mặt vuông vắn thì tính cách khoan dung, độ lượng, nhân duyên tốt. Bên cạnh đó, tình cảm của họ ổn định, không dễ thay lòng đổi dạ nên đời
Ngoài ra, những người có tướng tay chữ M rất đáng tin, chân thành và đặc biệt rất giỏi trong việc nhìn thấu sự dối trá. Bạn không thể qua mặt họ, họ luôn tìm ra sự giả dối và gian lận nhờ trực giác nhạy bén. Đồng thời, họ chúa ghét những ai lừa dối, phỉnh nịnh mình.
Thông thường khi cùng sở hữu dấu hiệu chữ M đặc biệt này trong lòng bàn tay, trực giác và dự cảm về tương lai của nữ giới tốt hơn nam giới. Trong trường hợp cả hai bàn tay đều sở hữu chữ M càng chứng tỏ chủ nhân là người xuất chúng, sinh ra để làm lãnh đạo, chính trị gia giỏi, mang lại nhiều lợi ích to lớn cho xã hội.
Theo LNT
Posted in Nhân Tướng
Posted by Lan
with No comments

Mỗi câu chuyện là một bài học quý giá, thiết thực để áp dụng vào công việc và cuộc sống. Hãy đọc và suy ngẫm nhé các bạn!
Bài học số 1
Bạn tôi ưng ý một chiếc máy tính, cần khoảng 30 triệu, thu nhập mỗi tháng của cậu ta chỉ có 7 triệu.
Vợ cậu ta nói với cậu ta rằng: “Anh điên rồi, anh mà mua thì chúng ta sẽ ly hôn”.
Cậu ta hỏi tôi phải làm sao. Tôi nói: “Cậu không xứng với chiếc máy tính kia, đến thứ mà mình thích cũng không có dũng khí đi giành lấy, thì sau này cậu định lăn lộn trong xã hội thế nào?”.
Cậu ta cắn răng mua chiếc máy tính kia. Để trả nợ, cậu ta bắt đầu tìm một số công việc làm thêm. Cuối cùng, cậu ta đã trả hết nợ trong vòng một tháng. Vợ cậu ta không vì sự điên cuồng của cậu ta mà bỏ cậu ta. Cô ta dẫn cậu ta vào một siêu thị xe, nói: “Ông xã, chúng ta mua trả góp chiếc xe BMW này nhé”. Ban đầu cậu ta giật nảy mình, tưởng vợ mình điên. Một năm sau, cậu ta đã trả được hết khoản tiền của chiếc xe đó.
Kết luận: Đến vật và người mà mình thích bạn cũng không có dũng khí giành lấy, vậy thì bạn đã được định trước là một kẻ thất bại.
Bài học số 2Một vị thiền sư nhìn thấy con bọ cạp rơi xuống nước, bèn quyết tâm cứu nó. Ai ngờ vừa chạm vào nó, đã bị nó chích vào tay. Vị thiền sư không sợ hãi, lại một lần nữa ra tay, lần này ông lại bị chích. Người bên cạnh nói: “Nó lúc nào chẳng chích người, hà tất phải cứu nó?”. Vị thiền sư đáp: “Chích người là bản năng của con bọ cạp, còn lương thiện là bản năng của tôi, sao tôi có thể vì bản năng của nó, mà vứt bỏ bản năng của tôi?”.
Kết luận: Lỗi sai của chúng ta nằm ở chỗ, bởi vì đám đông mà thay đổi bản thân.
Bài học số 3Có người hỏi một người nông dân: “Có trồng lúa mạch không?”.Người nông dân trả lời: “Không, tôi sợ trời sẽ không mưa”.Người kia lại hỏi: “Vậy anh có trồng cây bông không?”.Người nông dân trả lời: “Không, tôi sợ sâu sẽ ăn nó mất”.Người kia lại hỏi: “Vậy anh trồng gì?”.Người nông dân đáp: “Không trồng gì cả, tôi muốn an toàn”.
Kết luận: Một người không tình nguyện bỏ ra, không tình nguyện mạo hiểm, thì “không làm nên trò trống gì” đối với anh ta mà nói là chuyện quá hiển nhiên.
Bài học số 4
Ba người ra khỏi nhà, một người mang ô, một người mang gậy chống, một người đi tay không. Khi quay trở về, người cầm ô quần áo ướt sũng, người cầm gậy chống bị ngã, người thứ ba bình an vô sự. Thì ra, người có ô khi trời mưa đã bước đi mạnh bạo, cuối cùng bị ướt.
Khi đi chỗ đường trơn, người chống gậy cậy mình có gậy nên đi nhanh, kết quả chốc chốc lại bị ngã. Người đi tay không, khi trời đổ mưa, anh ta trú, khi thấy đường trơn trượt, anh ta đi cẩn thận, ngược lại lại bình yên vô sự.
Kết luận: Đôi khi, không phải là chúng ta thất bại vì khiếm khuyết của chúng ta, mà là thất bại vì ưu thế của chúng ta.
Bài học số 5Một tiểu hòa thượng phụ trách quét dọn lá rơi trong chùa, mỗi ngày phải tốn rất thời gian mới quét xong. Có người nói với cậu rằng: “Trước khi quét dọn cậu hãy dùng sức rung cây cho lá rụng hết, sau đó hẵng quét, như vậy ngày mai sẽ không cần phải quét nữa”.
Tiểu hòa thượng cảm thấy có lý, vui vẻ làm theo, thế nhưng ngày hôm sau, lá vẫn rơi đầy sân chùa.
Kết luận: Bất luận hôm nay bạn có nỗ lực thế nào, thì ngày mai lá vẫn rơi. Dục tốc bất đạt, làm tốt chuyện của ngày hôm nay, chính là có trách nhiệm với cuộc đời của mình.
Bài học số 6Một con quạ trong chuyến bay của mình đã gặp một con chim bồ câu đang trên đường về nhà. Con chim bồ câu hỏi: “Cậu muốn bay đi đâu thế?”.
Con quạ trả lời: “Thực ra tôi không muốn đi, nhưng mọi người đều chê tiếng kêu của tôi không hay, cho nên tôi muốn rời khỏi đây”.
Con chim bồ câu nói với con quạ: “Đừng phí công vô ích nữa! Nếu cậu không thay đổi giọng nói của mình, thì dù cậu có bay đến đâu đi chăng nữa cũng không được chào đón đâu”.
Kết luận: Nếu bạn hy vọng mọi chuyện sẽ trở nên tốt đẹp, vậy hãy bắt đầu từ việc thay đổi bản thân mình.
Bài học số 7
Một nhà có ba người con trai, họ trưởng thành trong những trận cãi vã không ngừng của cha mẹ, mẹ của họ lúc nào cũng bị cha họ đánh đập thương tích đầy mình.Người con cả nghĩ: Mẹ thật đáng thương! Sau này mình phải đối tốt với vợ mình hơn.Người con thứ hai nghĩ: Kết hôn thật chẳng có nghĩa lý gì, sau này mình lớn lên chắc chắn sẽ không lấy vợ!Người con thứ ba nghĩ: Thì ra, chồng có thể đánh đập vợ như vậy!
Kết luận: Cho dù môi trường sống giống nhau, nếu cách tư duy không giống nhau, sẽ kéo theo những cuộc đời không giống nhau.
Bài học số 8Ở một thị trấn nhỏ, có một vị thương nhân đến mở một trạm xăng, làm ăn phát đạt. Người thứ hai đến, mở một nhà hàng. Người thứ ba đến, mở một siêu thị. Thị trấn này chẳng mấy chốc đã trở nên sầm uất, phồn hoa.Ở một thị trấn khác, một thương nhân mở một trạm xăng, làm ăn phát đạt. Người thứ hai đến, mở trạm xăng dầu thứ hai. Người thứ ba đến, mở trạm xăng dầu thứ ba. Chuyện làm ăn không phát đạt như họ tưởng.
Kết luận: Cứ một mực đi theo con đường của người khác, tất sẽ thất bại.
Bài học số 9Anh A đi xe đạp, hai chân gắng sức đạp, 1 tiếng đồng hồ chỉ có thể đi được quãng đường khoảng 10 km.Anh A lái xe ô tô, một chân nhấn vào ga, 1 tiếng đồng hồ có thể đi được quãng đường 100 km.Anh A ngồi tàu cao tốc, nhắm mắt lại, 1 tiếng đồng hồ có thể đi được quãng đường 300 km.Anh A ngồi máy bay, ăn đồ ăn ngon, 1 tiếng đồng hồ có thể đi được quãng đường 1000 km.
Kết luận: Cùng một người, cùng sự cố gắng, thế nhưng khác nhau ở bệ phóng, kết quả sẽ khác nhau.
9 Bài Học Cuộc Sống Ý Nghĩa Đáng Để Bạn Suy Ngẫm - Nguồn: Lz13.cn
Dịch: Hải Đường - Ohay TV
Theo Sức khỏe Cộng đồng.
Dịch: Hải Đường - Ohay TV
Theo Sức khỏe Cộng đồng.
TTL Blog theo Web trẻ thơ:
Thứ Năm, 18 tháng 2, 2016
Thứ Ba, 16 tháng 2, 2016
Posted by Lan
with No comments
Thông thường ai cũng có nốt ruồi . Nốt ruồi có thể có màu vàng nhạt, màu nâu hoặc màu đỏ. Màu sắc của nốt ruồi thường không quan trọng bằng vị trí của nó. Có những nốt ruồi rơi vào cung quan lộc, cũng có những nốt ruồi ở vào vị trí kiếp sát. Chính vì thế bạn hay tra cứu tất cả các nốt ruồi trên cơ thể bạn để hiểu được ý nghĩa của chúng. Từ đó biết được đâu là nốt ruồi cát, đâu là nốt ruồi hung để có biện pháp xử lý kịp thời ( tẩy nốt ruồi).
Đọc thêm »
Đọc thêm »
Posted in Nhân Tướng, TỬ VI
Posted by Lan
with No comments
HÃY XEM CÁC BÀI VIẾT KHÁC TỬ VI NĂM 2016 CHO NGƯỜI THÂN HOẶC BẠN BÈ
TUỔI TÝ
TUỔI SỬU
TUỔI DẦN
TUỔI MÃO
TUỔI THÌN
TUỔI TỴ
TUỔI NGỌ
TUỔI MÙI
TUỔI THÂN
TUỔI DẬU
TUỔI TUẤT
TUỔI HỢI
Bạn có biết năm 2016 là năm gì?
Năm 2016 là năm Thân (năm con khỉ ) là Bính Thân nhé bạn.
Là năm của Đại Thánh - Tôn Hành Giả - Giả Hành Tôn
Năm 2016 mạng gì?
Năm 2016 mạng Hỏa ( Lửa chân núi)
Tử vi năm 2016 của bạn vào năm Thân này thế nào?
TỬ VI 2016
TTL Blog đang xây dựng các bài viết về tử vi năm 2016 để phụ vụ nhu cầu tìm hiểu của các độc giả thân quen của Blog. Đây là một công trình sẽ có gần 70 bài viết về tử vi các tuổi từ 18 đển khoảng 90, hi vọng sẽ xong sớm, để các bạn tra vận hạn tử vi, kiểm tra công danh, tiền bạc, tình cảm của chính bạn hoặc người thân trong gia đình.
Tử vi 2016 sẽ có khoảng 100 bài viết rất mất nhiều thời gian và công sức, ủng hộ TTL Blog bằng cái LIKE nhé
Xem Tử Vi Năm 2016
(Vận Hạn, Công Danh, Tiền Bạc, Học Hành, Sức Khỏe, Tình Cảm... Bói Tử Vi 2016)
XEM TỬ VI NĂM 2016
TỪ KHÓA: TỬ VI NĂM 2016, XEM TỬ VI NĂM 2016, XEM TU VI NAM 2016, TU VI 2016, TỬ VI NĂM BÍNH THÂN, VẬN HẠN NĂM 2016, VAN HAN NAM 2016
Posted in TỬ VI
Thứ Hai, 15 tháng 2, 2016
Thứ Sáu, 12 tháng 2, 2016
Posted by Lan
with No comments
CUỐN SÁCH HAY VỀ PHONG THUỶ BẰNG TIẾNG ANH
THE COMPLETE IDIOT’S GUIDE TO
Feng Shui
Second Edition
Tác giả: Elizabeth Moran, Master Joseph Yu, and Master Val Biktashev
![]() |
Sách phong thuỷ bằng tiếng anh |
Đọc thêm »
Posted in Phong Thủy, Sách, Sách Phong Thủy
Thứ Bảy, 6 tháng 2, 2016
Posted by Lan
with No comments
SÁCH PHONG THUỶ TOÀN THƯ
Tác giả: Thiệu Vỹ Hoa
Dịch: Đại đức Thích Minh Nghiêm
Nhà Xuất Bản Thời Đại

Posted in Phong Thủy, Sách, Sách Phong Thủy
Thứ Hai, 1 tháng 2, 2016
Posted by Lan
with No comments
Cách đây gần 20 năm rồi, thuở học lớp 6, lớp 7 (khoảng 2006-2007) được đi chăn trâu ở khu Cồn Lòi và Bàu Mai, Động Phúc Thượng Thạch Lạc. Tò mò về truyền miệng của các bậc cao niên về người nguyên thuỷ ở Xã Thạch Lạc xưa, tình cờ tìm thấy các vật dụng bằng đá mang tính chất có sự khác biệt nhiều và còn đẹp nữa, lại giống rừu đá trong sách lịch sử lớp 6 thời đó. TTL BLog hồi đó đã phán đây chính là rừu đá, búa đá của người VIỆT cổ, và tiếp tục tìm kiếm ở vùng Động Phúc Thượng cùng với các bạn bè đi chăn trâu.
TTL Blog chỉ tìm thấy những vật cổ này tại động Phúc Thượng mà không hề tìm thấy nó nơi nào khác, dù rằng có tìm kiếm tất cá các khu vực lân cận.
ĐẶC ĐIỂM ĐỊA HÌNH TÌM THẤY RỪU ĐÁ Ở ĐỘNG PHÚC THƯỢNG:
- Là một vùng gò cao bằng cát và được dân địa phương làm nơi chôn cất mồ mả.
- Cách dic tích khảo cổ Thạch Lạc (Chùa Tăng Phúc) khoảng 1-2 km.
- Trong vòng khoảng 10km không có ngọn núi nào nên hiếm đá.
- Nghi ngờ đây là khu chôn cất cho người Việt cồ, và khi chôn chất thì chôn theo các công cụ lao động.

CÁC HÌNH ẢNH VỀ RỪU ĐÁ BÚA ĐÁ
(Máy ảnh bị sự cố nên phải chụp bằng điện thoại, chất lượng hình không tốt lắm)


Đọc thêm »
Thứ Bảy, 30 tháng 1, 2016
Posted by Lan
with No comments
Kế thứ 3 trong 36 kế sách:
Mượn Đao Giết Người
Bạn còn nhớ vụ án "LỆ CHI VIÊN" (vụ án vườn vải) đang đầy tranh cải bởi nhiều nhà nghiên cứu lịch sử. Trong vụ án này liệu có ai đã dùng kế "Mượn đao giết người" khủng kiếp này? Nạn nhân là: Lê Thái Tông và tru di tam tộc (giết 3 họ) Nguyễn Trãi và Nguyễn Thị Lộ (thiếp của Nguyễn Trãi).
Một số ý kiến cho rằng người thiếp của vua Lê Thái Tông là Nguyễn Thị Anh đã mượn Nguyễn Thị Lộ và hoàn cảnh thực hiện âm ưu cướp ngôi cho vua cho con riêng. TTL không sâu sắc về lịch sử nhưng bạn có thể xem qua vụ án Lê Chi Viên tại trang Wikipedia : https://vi.wikipedia.org/wiki/V%E1%BB%A5_%C3%A1n_L%E1%BB%87_Chi_Vi%C3%AAn
Mời độc giả nghiên cứu nội dung và diễn giải của kế này theo sách "Thuật Đấu Trí"
Một số ý kiến cho rằng người thiếp của vua Lê Thái Tông là Nguyễn Thị Anh đã mượn Nguyễn Thị Lộ và hoàn cảnh thực hiện âm ưu cướp ngôi cho vua cho con riêng. TTL không sâu sắc về lịch sử nhưng bạn có thể xem qua vụ án Lê Chi Viên tại trang Wikipedia : https://vi.wikipedia.org/wiki/V%E1%BB%A5_%C3%A1n_L%E1%BB%87_Chi_Vi%C3%AAn
Mời độc giả nghiên cứu nội dung và diễn giải của kế này theo sách "Thuật Đấu Trí"


Đọc thêm »
Thứ Sáu, 29 tháng 1, 2016
Posted by Lan
with No comments
Chiều 26/1, Ban Kiểm phiếu báo cáo kết quả bầu cử, công bố danh sách các đồng chí trúng cử vào Ban Chấp hành Trung ương Đảng khóa XII. Đại hội đã thông qua báo cáo kết quả bầu cử Ban Chấp hành Trung ương Đảng khóa XII gồm 200 đồng chí, trong đó 180 Ủy viên chính thức và 20 Ủy viên dự khuyết.

Dưới đây là danh sách những người Hà Tĩnh trúng cử BCH Trung ương khóa XII
ỦY VIÊN CHÍNH THỨC
1. Nguyễn Thanh Bình
Ngày sinh: 19/05/1957
Quê quán: Xã Cẩm Thành, huyện Cẩm Xuyên, tỉnh Hà Tĩnh
Học vấn: Đại học
Chức vụ: Phó trưởng ban Tổ chức Trung ương (từ tháng 2/2015)
2. Nguyễn Chí Dũng
Ngày sinh: 5/8/1960
Quê quán: Xã Mai Phụ, huyện Lộc Hà, tỉnh Hà Tĩnh
Học vấn: Tiến sĩ Kinh tế
Chức vụ: Thứ trưởng Bộ Kế hoạch và Đầu tư (từ tháng 1/2014)
Posted in Xã Hội
Đăng ký:
Bài đăng (Atom)