• 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
Hình đại diện của người dùng
truongphu
VIP
VIP
Bài viết: 4756
Ngày tham gia: CN 04/11/2007 10:57 am
Đến từ: Cam Đức, Khánh hòa
Has thanked: 14 time
Been thanked: 509 time

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

Gửi bàigửi bởi truongphu » CN 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


Mã: Chọn hết

  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

Hình đại diện của người dùng
hoangluyen
Thành viên năng nổ
Thành viên năng nổ
Bài viết: 61
Ngày tham gia: T.Năm 03/04/2008 3:26 pm
Đến từ: Hải Hậu - Nam Định
Liên hệ:

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

Gửi bàigửi bởi hoangluyen » T.Sáu 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
Bài viết: 24
Ngày tham gia: T.Năm 16/10/2008 1:18 pm
Has thanked: 3 time

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

Gửi bàigửi bởi lachinhan » T.Hai 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?

Hình đại diện của người dùng
hoangthu1974
Guru
Guru
Bài viết: 812
Ngày tham gia: T.Năm 09/03/2006 9:30 am
Đến từ: Hà Nội --> Tp. Hồ Chí Minh
Been thanked: 13 time
Liên hệ:

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

Gửi bàigửi bởi hoangthu1974 » T.Hai 03/11/2008 2:35 pm

Mã: Chọn hết

  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
Bài viết: 448
Ngày tham gia: T.Hai 13/10/2008 3:12 pm
Đến từ: Dĩ An - Bình Dương
Been thanked: 32 time

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

Gửi bàigửi bởi boy1234 » T.Ba 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.

Mã: Chọn hết

  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
Bài viết: 47
Ngày tham gia: T.Năm 10/04/2008 4:40 pm
Has thanked: 3 time

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

Gửi bàigửi bởi btamsgn » T.Ba 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 đã viết: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


Mã: Chọn hết

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


Quay về “[VB] Chuỗi và Thời gian”

Đang trực tuyến

Đang xem chuyên mục này: Không có thành viên nào trực tuyến.1 khách