• Vui lòng đọc nội qui diễn đàn để tránh bị xóa bài viết
  • Tìm kiếm trước khi đặt câu hỏi

Tìm tên âm lịch của một năm

Các thủ thuật liên quan đến xử lý chuỗi và thời gian
User avatar
truongphu
VIP
VIP
Posts: 4764
Joined: Sun 04/11/2007 10:57 am
Location: Cam Đức, Khánh hòa
Has thanked: 14 times
Been thanked: 519 times

Tìm tên âm lịch của một năm

Postby truongphu » Sun 06/04/2008 11:12 pm

Thủ thuật: Tìm tên âm lịch của một năm
Tác giả: truongphu
Mô tả: Tìm tên âm lịch của một năm, viết lại bài cũ cùng tên cho gọn


Code: Select all

  1. Private Function NamÂmLich(ByVal year As Integer) As String
  2. Dim Can() As String, Chi() As String
  3. Can = Split("Canh,Tân,Nhâm,Qúy,Giáp,Ât,Bính,Ðinh,Mâu,Ky", ",")
  4. Chi = Split("Thân,Dâu,Tuât,Ho'i,Tý,Suu,Dân,Mao,Thìn,Ty,Ngo,Mùi", ",")
  5. NamÂmLich = Can(year Mod 10) & " " & Chi(year Mod 12)
  6. End Function

1- Không dùng năm trước công nguyên
2- Không đúng với tháng đầu (thêm bớt vài ngày) năm DL = tháng cuối (thêm bớt vài ngày) năm AL


o0o--truongphu--o0o

.........
Ghé thăm:
Chuyện Linh Tinh

User avatar
hoangluyen
Thành viên năng nổ
Thành viên năng nổ
Posts: 61
Joined: Thu 03/04/2008 3:26 pm
Location: Hải Hậu - Nam Định
Contact:

Re: Tìm tên âm lịch của một năm

Postby hoangluyen » Fri 11/04/2008 10:19 am

Đoạn code này hay đấy, nó tối ưu hơn cái thằng Select case mình làm trước kia.
..::Chỉ có tình yêu (*) và lao động sẽ làm cho con người trở nên đẹp hoàn mĩ ::..
-------------------------------------------------------------------

lachinhan
Thành viên chính thức
Thành viên chính thức
Posts: 24
Joined: Thu 16/10/2008 1:18 pm
Has thanked: 3 times

Re: Tìm tên âm lịch của một năm

Postby lachinhan » Mon 03/11/2008 2:05 pm

sao không khai báo mảng cố định và dùng hàm array thay cho split?

User avatar
hoangthu1974
Guru
Guru
Posts: 813
Joined: Thu 09/03/2006 9:30 am
Location: Hà Nội --> Tp. Hồ Chí Minh
Been thanked: 13 times
Contact:

Re: Tìm tên âm lịch của một năm

Postby hoangthu1974 » Mon 03/11/2008 2:35 pm

Code: Select all

  1.    Dim CAN() As String = {"Giáp", "Ất", "Bính", "Đinh", "Mậu", "Kỷ", "Canh", "Tân", "Nhâm", "Quý"}
  2.     Dim CHI() As String = {"Tý", "Sửu", "Dần", "Mão", "Thìn", "Tỵ", "Ngọ", "Mùi", "Thân", "Dậu", "Tuất", "Hợi"}
  3.     Function getYearCanChi(ByVal Day As Date) As String
  4.         Dim LunarDay As New System.Globalization.ChineseLunisolarCalendar
  5.         Dim year As Integer = LunarDay.GetYear(Day)
  6.         Return CAN((year + 6) Mod 10) & " " & CHI((year + 8) Mod 12)
  7.     End Function
  8.  

Cái này lấy chính xác, không sai một chút nào cả. Trích từ chương trình Xem ngày của tôi ra.

boy1234
Guru
Guru
Posts: 448
Joined: Mon 13/10/2008 3:12 pm
Location: Dĩ An - Bình Dương
Been thanked: 32 times

Re: Tìm tên âm lịch của một năm

Postby boy1234 » Tue 06/01/2009 11:55 am

Em mò viết bên SQL server cũng được 1 cái hàm này do SQL server không có mảng nên em dùng lệnh cắt chuổi.

Code: Select all

  1.  
  2. CREATE PROC NamAmLich @Nam int
  3. AS
  4. BEGIN
  5.     DECLARE @can int DECLARE @chi int
  6.     DECLARE @Tencan char(40)
  7.     DECLARE @Tenchi char(48)
  8.     DECLARE @Chuoican varchar(4)
  9.     DECLARE @Chuoichi varchar(4)
  10.     SET @Tencan= 'CanhTan NhamQuy GiapAt  BinhĐinhMau Ky  '
  11.     SET @Tenchi= 'ThanDau TuatHoi Ti  Suu Dan Mao ThinTy  Ngo Mui '
  12.  
  13.     SET @can= (@Nam% 10)+ 1
  14.     SET @chi= (@Nam% 12)+ 1
  15.     IF @can= 1 SET @Chuoican= SUBSTRING(@Tencan, 1, 4)
  16.     ELSE       SET @Chuoican= SUBSTRING(@Tencan, ((@can-1)*4)+1, 4)
  17.     IF @chi= 1 SET @Chuoichi= SUBSTRING(@Tenchi, 1, 4)
  18.     ELSE       SET @Chuoichi= SUBSTRING(@Tenchi, ((@chi-1)*4)+1, 4)
  19.    
  20.     PRINT'Nam Am Lich la: '+ @Chuoican+ ' '+ @Chuoichi
  21. END
  22. go
  23. EXEC NamAmLich 1968
  24. EXEC NamAmLich 2008
  25. EXEC NamAmLich 1945

Không biết em có spam không mong mấy anh đừng xóa nha
Dạo này nghiện honda SS50

btamsgn
Thành viên chính thức
Thành viên chính thức
Posts: 47
Joined: Thu 10/04/2008 4:40 pm
Has thanked: 3 times

Re: Tìm tên âm lịch của một năm

Postby btamsgn » Tue 08/07/2014 12:52 pm

Chào bạn Truong Phu,
1. bên dưới là code tìm tên âm lịch của một năm.
giờ mình muốn tìm code vb6 tên âm lịch của một tháng trong năm như thế nào:
vd: dương lịch 28/01/1971=>âm lịch 2/01/1971
mình có code vb6 chuyển từ ngày dương lịch sang âm lịch rồi. và cũng có thêm code tính tên âm lịch của năm của bạn.
giờ mình muốn tìm code tính tên âm lịch của một tháng bất kỳ trong năm dựa trên ngày/tháng/năm âm lịch đã chuyển?
vd:tháng 01/1971 =>tên tháng âm lịch: Canh Dần
vd: tháng 08/1976=>tên tháng âm lịch: Đinh Dậu
v.v..

2. Nhân tiện bạn giúp mình code chuyển giờ sang âm lịch luôn dựa trên ngày âm lịch có sẵn.
vd: 2/01/1971 âm lịch ngày Quý Sửu, 7g sáng- tên giờ âm lịch: Bính Thìn
vd: 15/07/1976 âm lịch ngày Giáp Ngọ, 9g sáng-tên giờ âm lịch:Kỷ Tị
v.v

Thanks,
Tâm

truongphu wrote:Thủ thuật: Tìm tên âm lịch của một năm
Tác giả: truongphu
Mô tả: Tìm tên âm lịch của một năm, viết lại bài cũ cùng tên cho gọn


Code: Select all

Private Function NamÂmLich(ByVal year As Integer) As StringDim Can() As String, Chi() As StringCan = Split("Canh,Tân,Nhâm,Qúy,Giáp,Ât,Bính,Ðinh,Mâu,Ky", ",")Chi = Split("Thân,Dâu,Tuât,Ho'i,Tý,Suu,Dân,Mao,Thìn,Ty,Ngo,Mùi", ",")NamÂmLich = Can(year Mod 10) & " " & Chi(year Mod 12)End Function

1- Không dùng năm trước công nguyên
2- Không đúng với tháng đầu (thêm bớt vài ngày) năm DL = tháng cuối (thêm bớt vài ngày) năm AL


Return to “[VB] Chuỗi và Thời gian”

Who is online

Users browsing this forum: No registered users and 0 guests