PDA

View Full Version : Làm sao tính tuổi ta???



hkien
26-03-2004, 21:50
Tui có ô để input ngày-tháng-năm sinh của 1 người .
Giờ làm sao tính tuổi của người đó(thuộc loại truncate,ví dụ 18 tuổi 11 tháng vẫn coi là 18 tuổi) vào thời điểm hiện tại!
ai giúp nhanh chút nghe,bi giờ đến 8h sáng mai bắt buộc phải có cái ngày rùi...
ai giúp duoc làm ơn giúp nhanh!
cám ơn nhiều!

past_beggar
26-03-2004, 22:42
Hè,
Year(Now) - Year(CDate(var_Input)) là OK.
Xem lại mấy hàm cơ bản của VB đi cha

Thân

hkien
27-03-2004, 13:33
tui làm gì có sách vở mà xem ông ơi!toàn xem ví dụ thui,mà cái tính tuổi tui ko có ví dụ...
Ví dụ cụ thể giùm bạn đi ông...:D
ví dụ tui có 3 cái textfield chứa ngày-tháng-năm
txtday,txtmonth, và txtyear
cho ví dụ nhu này

Dim age As Integer

làm sao assign age dựa theo ngày,tháng,năm input 3 textfield trên?thanx

past_beggar
27-03-2004, 20:43
Hè.
1. Câu hỏi khó quá, không ai trả lời được
2. Các Mod đi nghỉ mát hết rồi

zhaokuangzin
28-03-2004, 10:13
Tui có ô để input ngày-tháng-năm sinh của 1 người .
Giờ làm sao tính tuổi của người đó(thuộc loại truncate,ví dụ 18 tuổi 11 tháng vẫn coi là 18 tuổi) vào thời điểm hiện tại!
ai giúp nhanh chút nghe,bi giờ đến 8h sáng mai bắt buộc phải có cái ngày rùi...
ai giúp duoc làm ơn giúp nhanh!
cám ơn nhiều!
Bạn có thể tính ra số tháng rồi đem chia cho 12(lấy phần nguyên) . có thể dùng hàm DATEDIFF để lấy số tháng

nganha
29-03-2004, 19:46
tui làm gì có sách vở mà xem ông ơi!toàn xem ví dụ thui,mà cái tính tuổi tui ko có ví dụ...
Ví dụ cụ thể giùm bạn đi ông...:D
ví dụ tui có 3 cái textfield chứa ngày-tháng-năm
txtday,txtmonth, và txtyear
cho ví dụ nhu này
Dim age As Integer
làm sao assign age dựa theo ngày,tháng,năm input 3 textfield trên?thanx
Nếu bạn có 3 textbox để nhập ngày, tháng, năm thì bạn phải viết thêm hàm để kiểm tra xem các dữ liệu bạn nhập vào khi ghép lại có phải là một ngày hợp lệ không. Ví dụ ngày 29/2/1900 là ngày không hợp lệ theo lịch Gregorian nhưng lại hợp lệ theo lịch Julian. Để kiểm tra tính hợp lệ bạn nên tham khảo thêm cách tính năm nhuận theo lịch mà bạn áp dụng (Gregorian, Julian v.v).
Lưu ý là các hàm liên quan đến ngày/tháng/năm của VB6.0 áp dụng được cho ngày trong khoảng từ #1/Jan/100# đến #31/Dec/9999#. Ngoài phạm vi này thì bị báo lỗi.
Hàm DateDiff có cú pháp như sau:
DateDiff(Interval, Date1, Date2[, FirstDayofWeek[, FirstWeekofYear]])
Trong đó:
Interval: là chuỗi ví dụ "yyyy", "m" v.v
Date1: Ngày để bắt đầu để so sánh
Date2: Ngày kết thúc so sánh
Các tham số FirstDayofWeek,FirstWeekofYear là tùy chọn. Bạn xem thêm trong MSDN để có trợ giúp
Để tính ra số tháng và số năm bạn làm như sau:
Dim xMonth as Integer
Dim xYear As Integer
xMonth=DateDiff("m",YourDate,Now)
xYear=xMonth \ 12
Nếu ngày của bạn nằm ngoài khoảng có thể áp dụng các hàm ngày/tháng/năm của VB (ví dụ ngày 31/12/99) thì có thể làm như sau:
Đầu tiên dùng hàm Year để so sánh giá trị của năm hiện tại với giá trị của năm bạn đã nhập vào trong textbox Year.
a = Year(Now)-YourYear
Sau đó dùng hàm Month để so sánh giá trị của tháng hiện tại với tháng bạn đã nhập trong textbox Month.
b = Month(Now)-YourMonth
Các trường hợp sau xảy ra:
a. Tháng hiện tại lớn hơn tháng bạn nhập. Khi đó Số năm là a
b. Tháng hiện tại nhỏ hơn tháng bạn nhập. Khi đó Số năm là a - 1
c. Tháng hiện tại bằng tháng bạn nhập.
Bạn dùng hàm Day để so sánh giá trị của Ngày hiện tại với Ngày bạn nhập vào để rút ra kết quả tùy theo ngày nào lớn hơn.
c = Day(Now)-YourDay
c1. Ngày hiện tại lớn hơn hoặc bằng ngày bạn nhập. Khi đó Số năm là a
c2. Ngày hiện tại nhỏ hơn ngày bạn nhập. Khi đó Số năm là a -1