Đặng văn Linh

5,Tháng Mười Hai, 2009 at 3:55 chiều 1 Bình luận


PDA

View Full Version : Giúp em cái hàm tính ngày trong VB này với ?


doiphieudu
04-08-2004, 08:45
Ví dụ em có hai ngày bất kì như sau : 01/07/2004 và 01/08/2004 em cần một hàm làm phép tính trừ hai ngày trên để có kết quả là 31 ngày. Bác nào biết làm ơn chỉ dùm, cảm ơn nhiều.

gato
04-08-2004, 09:07
Híc, ngồi buồn viết chơi, bạn thử xài xem. Vừa viết xong không biết có lỗi nào không. Bạn tự test nhé. Không có bảo hành đâu! Quan trọng bạn lấy ý tưởng thôi.

Private Function Getdays(mdate As Date) As Long
Dim TotalDays As Long
TotalDays = (Year(mdate) – 1) * DayOfYear(mdate) + (Month(mdate) – 1) * DayOfMonth(mdate) + Day(mdate)
Getdays = TotalDays
End Function

Private Function DayOfYear(mdate As Date) As Integer
If (Year(Date) Mod 4 = 0) Then
DayOfYear = 366
Else
DayOfYear = 365
End If
End Function

Private Function DayOfMonth(mdate As Date) As Integer
Select Case Month(mdate)
Case 1, 3, 5, 7, 8, 10, 12: DayOfMonth = 31: Exit Function
Case 4, 6, 9, 11: DayOfMonth = 30: Exit Function
Case 2:
If (Year(mdate) Mod 4 = 0) Then
DayOfMonth = 29
Else
DayOfMonth = 28
End If
Exit Function
End Select
End Function

Private Sub Form_Load()
Dim mstr As String
MsgBox Getdays(“31/8 / 2004”) – Getdays(“31 /7 / 2004”)
End Sub


doiphieudu
04-08-2004, 09:32
Cảm ơn bạn gato rất nhiều.

adprog
04-08-2004, 10:01
ui trời, dùng hàm datediff là xong, viết chi cho tốn công, ví dụ: datediff(“d”, date1, date2).

gato
05-08-2004, 00:44
Ủa thế à? Có hàm này à? Híc không biết.

Samir Duran
05-08-2004, 01:00
Ủa, trong VB6 Library em đâu thấy có hàm này?🙂 PHải tự viết như anh gato thôi.
À và nhân tiện cho em hỏi -1 trong câu lệnh này có tác dụng gì vậy ? Chẳng phải mình tính số ngày tổng cộng từ 1/1/1 A.D đến hai ngày này sao ?
TotalDays = (Year(mdate) – 1) * DayOfYear(mdate) + (Month(mdate) – 1) * DayOfMonth(mdate) + Day

motmetbay
05-08-2004, 02:16
Có chứ, chỉ cần bấm vài chử đầu rồi nhấn tổ hợp Ctrl+Spacebar là tha hồ lựa chọn.

Trunks
05-08-2004, 02:28
Theo tui thấy thì chỉ cần lấy ngày 2 – ngày 1 cũng cho kết quả là 31. Tui đã test rồi.

Fetblackeyes
05-08-2004, 05:00
Hàm Datediff, Dateadd… Chỉ cần bấm F2, search chữ Date …OK…

gato
05-08-2004, 06:17
Có, những hàm trên là có. Dùng hàm chuẩn của VB tốt hơn nhiều, mà đỡ sai. Hôm qua có bạn hỏi mình tiện viết và post lên luôn, không để ý tới mấy hàm kia.

doiphieudu
05-08-2004, 07:22
Cho em hỏi thêm các bác câu hỏi phát sinh này nữa : Bây giờ sau khi có kết quả là số ngày rồi em muốn hiển thị kết quả theo số tháng thì làm thế nào. Ví dụ 01/07/2004 và 08/08/2004 thì hiện kết quả là 1 tháng 8 ngày. Cái này có liên quan đến việc 1 tháng có thể là 30 ngày, 31 ngày, hoặc 29 ngày. Cảm ơn mọi người nhiều.

doiphieudu
06-08-2004, 03:47
Em vẫn chưa nghĩ ra cách khống chế thế nào cái vụ “tháng” này mà thời gian nộp bài cho thầy sắp đến rồi, có ai cho em được ý tưởng nào không các bác ơi ???!!!??? :helpsmili :present: :helpsmili

Fetblackeyes
06-08-2004, 04:46
Format nó là: DateDiff(Interval as String,…) ->nếu DateDiff(“d”,…) thì là số ngày, còn DateDiff(“m”…) thì ra số tháng

TheHulk
07-08-2004, 06:54
dùng hàm Month(date) để trích xuất tháng trong một chuỗi,rồi trừ 2 chuỗi cho nhau là xong.ví dụ(chú ý là tháng – ngày – năm chứ không phải là ngày – tháng – năm) :
debug.print month(“8/26/1989”) – month(“1/26/1989”)
thì nó sẽ in ra số 7

Bacmaon
19-08-2004, 07:31
TheHulk ui! lỡ ngày 1/1/2004 trừ cho ngày 30/10/2000 là ra ngày âm, tháng âm à ? phương án giải quyết chứ

hoangtuera
15-01-2008, 16:27
Private Sub Command1_Click()
Dim getDate As Long
getDate = DateDiff(“d”, 2 – 6 – 2008, 5 – 6 – 2008)
MsgBox getDate & ” ngay”, vbOKOnly, “Thong bao”
End Sub

kysudat
16-01-2008, 10:30
Thu cach nay thu nha
Private Sub Command1_Click()
Dim Thang, Ngay As Integer
Thang = Month(txtDen) – Month(txtTu)
If Thang < 0 Then Thang = Thang + 12
Ngay = Day(txtDen) – Day(txtTu)
If Ngay < 0 Then
Ngay = Ngay + MaxNgay(Month(txtTu), Year(txtTu))
Thang = Thang – 1
End If
txtngaythang = “Ngay ” & txtDen & ” – ngay ” & txtTu & ” = ” & Thang & ” Thang va ” & Ngay & ” Ngay”
End Sub

Private Function MaxNgay(Thang As Integer, Nam As Integer) As Integer
‘Tim ngay lon nhat trong thang
Select Case Thang
Case 1, 3, 5, 7, 8, 10, 12
MaxNgay = 31
Case 4, 6, 9, 11
MaxNgay = 30
Case 2
If Nam Mod 4 = 0 Then
MaxNgay = 29
Else
MaxNgay = 28
End If
Case Else
MsgBox “Baïn ñaõ choïn bieán ñaàu vaøo khoâng hôïp leä, Haõy choïn laïi”
End Select
End Function

Minh Dat


cuonphong
16-01-2008, 16:03
Các bạn cần để ý format date hệ thống của windows nếu là format(dd/mm/yyyy) thì các hàm của Date của Vb sẽ làm việc không chính xác cần đưa về mm/dd/yyyy

Entry filed under: Lập Trình. Tags: .

Hello world! Lập trình C++ trên Symbian

1 Phản hồi Add your own

  • 1. dangvanlinh0101  |  5,Tháng Mười Hai, 2009 lúc 3:56 chiều

    ádasdas

    Trả lời

Gửi phản hồi

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s

Trackback this post  |  Subscribe to the comments via RSS Feed



%d bloggers like this: