ต้องการทราบเวลาที่ผ่านไป ว่า กี่ช.ม. แล้วครับ

   
ต้องการทราบเวลาที่ผ่านไป ว่า กี่ช.ม. แล้วครับ โดยเช็คจาด data ที่ key entry (วันเวลาที่ save) ลง database เทียบกับ วันเวลา ปัจจุบันครับ
ขอบคุณครับ
new member
15 ก.ค. 47 เวลา 10:51:13 น. --> 202.183.166.82,
   
   
หาจากกระทู้เก่าๆ มาให้

ให้ เรียก Caltime(TIME1,TIME2)
TIME1 เป็นตัวแปร หมายถึง เวลาเริ่ม
TIME2 เป็นตัวแปร หมายถึง เวลาสิ้นสุด
แต่ถ้าเป็นวัน ไม่ต้องใช้โปรแรมนี้เอาตัวแปรของวันมาลบกัน
ได้เท่าใด * 24*3600 แล้วลองปรับ ตั้งแต่ if cl_ti >= 3600
ก็คงพอได้คำตอบมังครับ

โปรแกรมของ Caltime เป็นดังนี้ครับ
function caltime
parameter start_jb,stop_jb
hh_s = val(left(start_jb,2))*3600
mm_s = val(subs(start_jb,4,2))*60
ss_s = iif(len(start_jb)=8,val(right(start_jb,2)),0)
tt_s = hh_s+mm_s+ss_s

hh_e = val(left(stop_jb,2))*3600
mm_e = val(subs(stop_jb,4,2))*60
ss_e = iif(len(stop_jb)=8,val(right(stop_jb,2)),0)
tt_e = hh_e+mm_e+ss_e

cl_ti = tt_e-tt_s

if cl_ti >= 3600
cl_hh=right('0'+alltrim(str(int(cl_ti/3600))),2)
cl_mod = mod(cl_ti,3600)
cl_mm = right('0'+alltrim(str(int(cl_mod/60))),2)
cl_ss = right('0'+alltrim(str(mod(cl_mod,60))),2)
else
cl_hh='00'
if cl_ti >=60
cl_mod = mod(cl_ti,60)
cl_mm = right('0'+alltrim(str(int(cl_ti/60))),2)
cl_ss = right('0'+alltrim(str(mod(cl_mod,60))),2)
else
cl_mm='00'
cl_mod = mod(cl_ti,60)
cl_ss = right('0'+alltrim(str(cl_mod)),2)
endi
endi
tl_ti = cl_hh+":"+cl_mm+":"+cl_ss
return tl_ti
.
15 ก.ค. 47 เวลา 14:33:14 น. --> 203.146.251.114
  
   
ไม่ทราบว่า Format วันเวลา เป็น DATETIME หรือเปล่า
ถ้าใช่ ให้ ใช้ DATETIME() - filename.datetime = จำนวนวินาทีที่ใช้ไป
เขียนฟังก์ชั่น แปลงจาก วินาที เป็นชั่วโมง เอาเองนะครับ
Human
16 ก.ค. 47 เวลา 8:07:42 น. --> 202.28.169.165,
  
   
ขอบคุณครับ
new member
16 ก.ค. 47 เวลา 8:33:14 น. --> 202.183.175.250
  
   
input, output format ที่ต้องการ เป็นอย่างไรครับ เพราะ code ีที่ใช้ต้อง
สอดคล้องกันด้วย

ผมแนะให้ใช้ function กลุ่ม date time ของ VFP มาใช้

เห็นโจทย์แล้วเดาว่าข้อมูลคุณน่าจะเป็น datetime
T1 = DATETIME(2004,7,16, 8,0,0) && เวลาปัจจุบัน Datetime()
T2 = DATETIME(2004,7,16, 7,45,30) && เวลาที่ save
? ELapseTime(T1, T2)

&& ให้ output เป็น string ในรูป [ 999 D ] HH:MM:SS
&& โจทย์คุณอาจไม่ต้องใช้ กรณีข้ามวัน

FUNCTION ElapseTime
LPARAMETERS t1, t2
* ไม่ได้ตรวจสอบว่า parameter ถูกต้อง
tDiff = ABS(t2-t1)
IF tDiff > 86400 && 1 วันมี 86400 วินาที
cRes = TRANSFORM(INT(tDiff/86400), '999 D ')
tDiff = tDiff%86400
ELSE
cRes = ''
ENDIF
&& CTOT("0") ให้ datetime 1899/12/30 00:00:00
&& เมื่อบวกวินาทีแล้ว TTOC() จะให้เวลาเป็น ขม นาที วินาที มา
RETURN cRes + TTOC(CTOT('0')+tDiff, 2)

ถ้าเริ่มต้นด้วย input ที่ไม่ใช่ DATETIME ของ VFP ก็ทำการแปลงให้
เสร็จก่อนใช้ด้วย function CTOT()

ถ้าได้เวลาผ่านไปเป็นวินาทีเรียบร้อยมาแล้ว ก็ไม่ต้องใช้ function
เอา TTOC(CTOT('0')+tDiff, 2) ใช้ตรงๆเลย
...
16 ก.ค. 47 เวลา 8:40:55 น. --> 203.185.143.229
  
ขอเชิญร่วมตอบคำถามครับ
 
ผู้ตอบ :
รหัสผ่าน :
รูปภาพ :
คำตอบ :