Đánh giá chủ đề:
  • 0 Votes - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[Hỏi] Tính khoảng thời gian giữa hai thời điểm (theo phút)
#1
Hi all
Hiện tại mình gặp khó khăn trong việc xử lý tính khoảng thời gian giữa hai thời điểm khác nhau. Hai thời điểm này sẽ được nhập trên form. Trong trường hợp mốc time cuối > mốc time đầu thì có thể làm được nhưng trong trường hợp ngược lại thì không đúng. Ví dụ mốc thời gian đầu là 22:15 và mốc thời gian sau là 1:15 chẳng hạn. Thời gian giới hạn chỉ trong 24h thôi. Kết quả đúng phải là 360 phút. Vậy nhờ các bạn giúp mình thủ thuật này nhé
Cám ơn các bạn nhiều
Chữ ký của tvn_hut Xin chào, mình là Dameaccess, Tham gia http://thuthuataccess.com/forum từ ngày 06-06 -13.
Reply
Những người đã cảm ơn
#2
Gợi ý cho bạn nhé:
1. Nên thiết đặt thêm thuộc tính ngày, khi đó dùng các hàm DateTime để tính tương ứng ra số giờ.
2. Dùng hàm if để xử lý.
(Hướng dẫn chi tiết quá sợ bạn không chịu tư duy, cái này thiên về toán học một chút)
Chúc thành công
Chữ ký của cpucloi Tôi chỉ biết mỗi một điều là những điều tôi biết được còn quá ít 021
Gmail: cgiahuy13@gmail.com


ღღღღღTài sản của cpucloi (View All Items) ღღღღღ
Reply
Những người đã cảm ơn tvn_hut
#3
(22-08-13, 05:40 PM)tvn_hut Đã viết: Hi all
Hiện tại mình gặp khó khăn trong việc xử lý tính khoảng thời gian giữa hai thời điểm khác nhau. Hai thời điểm này sẽ được nhập trên form. Trong trường hợp mốc time cuối > mốc time đầu thì có thể làm được nhưng trong trường hợp ngược lại thì không đúng. Ví dụ mốc thời gian đầu là 22:15 và mốc thời gian sau là 1:15 chẳng hạn. Thời gian giới hạn chỉ trong 24h thôi. Kết quả đúng phải là 360 phút. Vậy nhờ các bạn giúp mình thủ thuật này nhé
Cám ơn các bạn nhiều

Chào bạn!
Nói chung mềnh chưa rõ ý bạn 24h là gì. Nhưng theo logic đúng thì chỉ có 3h thôi.
Sử dụng logic này nhé:

Hour = (IIf([End Time]<[Start Time],[End Time]-[Start Time]+24,[End Time]-[Start Time]))

chúc bạn thành công
Chữ ký của truonghet
Website: https://sites.google.com/site/requirementsoftware
Nhận làm phần mềm access kế toán, kho, đề tài học tập....hire me!
Email: requirementsoftware@gmail.com
Tel: 0168 2381 993
Yahoo and Skype: truonghet
Reply
Những người đã cảm ơn
#4
time cuối (t2) > mốc time đầu (t1) thì kq = t2-t1.
time cuối (t2) < mốc time đầu (t1) thì kq = t2+24-t1.

---là OK
Chữ ký của thquanks Xin chào, mình là thquanks, Tham gia http://thuthuataccess.com/forum từ ngày 24-07 -13.
Reply
Những người đã cảm ơn
#5
(23-08-13, 08:49 AM)thquanks Đã viết: time cuối (t2) > mốc time đầu (t1) thì kq = t2-t1.
time cuối (t2) < mốc time đầu (t1) thì kq = t2+24-t1.

---là OK

Ý tưởng không khác gì của mình nhi~014
Chữ ký của truonghet
Website: https://sites.google.com/site/requirementsoftware
Nhận làm phần mềm access kế toán, kho, đề tài học tập....hire me!
Email: requirementsoftware@gmail.com
Tel: 0168 2381 993
Yahoo and Skype: truonghet
Reply
Những người đã cảm ơn
#6
(23-08-13, 09:44 AM)truonghet Đã viết:
(23-08-13, 08:49 AM)thquanks Đã viết: time cuối (t2) > mốc time đầu (t1) thì kq = t2-t1.
time cuối (t2) < mốc time đầu (t1) thì kq = t2+24-t1.

---là OK

Ý tưởng không khác gì của mình nhi~014


SORRY tớ chưa đọc kịp <-------------------------
Chữ ký của thquanks Xin chào, mình là thquanks, Tham gia http://thuthuataccess.com/forum từ ngày 24-07 -13.
Reply
Những người đã cảm ơn
#7
Hi all, Cám ơn các bạn nha
Đúng là không có cách nào ngoài việc cộng thêm 24h cả. Mình cũng đã thử và kết quả tạm hài lòng
Đây là code mình viết, nếu bạn nào có cách viết hay hơn thì cho mình hay nhé:
Mã PHP:
[Dim Mtime As Date
Private Sub CboDETime_AfterUpdate()
  If 
Not IsNull(Me![DSTime]) And Not IsNull(Me![DETime]) Then
     
If Hour(Me![DETime]) > Hour(Me![DSTime]) Then
     Mtime 
= (Me![DETime] - Me![DSTime])
     Else
     
Mtime = (Me![DETime] + 24 Me![DSTime])
     
End If
     
TotDownTime IIf(Hour(Mtime) = 120Hour(Mtime) * 60) + Minute(Mtime)
  
End If
End Sub
Private Sub DSTime_AfterUpdate()
  If 
Not IsNull(Me![DSTime]) And Not IsNull(Me![DETime]) Then
       
If Hour(Me![DETime]) > Hour(Me![DSTime]) Then
     Mtime 
= (Me![DETime] - Me![DSTime])
     Else
     
Mtime = (Me![DETime] + 24 Me![DSTime])
     
End If
     
TotDownTime IIf(Hour(Mtime) = 120Hour(Mtime) * 60) + Minute(Mtime)
  
End If
End Sub
Private Sub CboTotDownTime_AfterUpdate()
   If 
Not IsNull(Me![DSTime]) And Not IsNull(Me![DETime]) Then
       
If Hour(Me![DETime]) > Hour(Me![DSTime]) Then
     Mtime 
= (Me![DETime] - Me![DSTime])
     Else
     
Mtime = (Me![DETime] + 24 Me![DSTime])
     
End If
     
TotDownTime IIf(Hour(Mtime) = 120Hour(Mtime) * 60) + Minute(Mtime)
  
End If
  If 
Not IsNull(Me![DSTime]) And Not IsNull(Me![DETime]) Then
     Mtime 
CVDate(Me![DSTime]) + CVDate(Me![TotDownTime] \ 60 ":" Me![TotDownTime] - (Me![TotDownTime] \ 60) * 60)
     
Me![DETime] = Mtime
  End 
If     
End Sub/php 
]
[/php]
Chữ ký của tvn_hut Xin chào, mình là Dameaccess, Tham gia http://thuthuataccess.com/forum từ ngày 06-06 -13.
Reply
Những người đã cảm ơn


Có thể liên quan đến chủ đề
Chủ đề: Tác giả Trả lời: Xem: Bài mới nhất
  Sựa khác nhau giữa Module và Class Module, phạm vi áp dụng của từng loại. MinhnHang 6 302 29-11-16, 09:11 PM
Bài mới nhất: ongke0711
  [Hỏi] Số Thứ Tự Theo Nhóm Hàng Hóa Trong Access pherotao 2 145 02-11-16, 03:05 PM
Bài mới nhất: pherotao
Photo Hướng dẫn tính tôn kho từ một bảng chi tiết nhập xuất tt1212 8 399 17-06-16, 04:47 PM
Bài mới nhất: tt1212
  [Help] Tính lãi suất vay ngân hàng dangh5 2 173 31-05-16, 12:25 AM
Bài mới nhất: dangh5
  [Thủ Thuật] Liên kết dữ liệu giữa subform và mainform tvn_hut 10 798 21-05-16, 11:08 PM
Bài mới nhất: tvn_hut

Chuyển nhanh:


User(s) browsing this thread: 1 Guest(s)
Diễn Đàn Thơ Văn Thi Ẩm Lâu|Nhà Hàng Sông Thơ