กระทู้เก่าบอร์ด อ.Yeadram
5,921 2
URL.หัวข้อ /
URL
อยากทราบ Function เกี่ยวกับการแปลงวินาที
หนูต้องการทราบ Function หรือ Code ทีสามารถแปลงหน่วยวินาทีให้เป็น จำนวนวัน ชม. นาที วินาที คะ เพราะทดลองทำหลายวิธีแล้ว
ไม่สามารถทำได้คะ
ขอบคุณคะ
ไม่สามารถทำได้คะ
ขอบคุณคะ
2 Reply in this Topic. Dispaly 1 pages and you are on page number 1
2 @R11433
ขอบพระคุณมากๆคะ
หนูก็ไม่ทราบว่าทำไมหน่วยคอมจึงออกแบบเก็บข้อมูลแบบนี้
เมื่อขอข้อมูล มาวิเคราะห์ก็จะติดตรงนี้ ไม่ได้ออกแบบเองคะ
หนูว่าบอร์ดนี้มีประโยชน์มากๆ ขอเรียกว่า อจ.ทุกคนเสียสละ
ทุ่มเทให้ความรู้เต็มที่โดยไม่ปิดบังคะ และรู้สึกเป็นหนี้บุญคุณคะ
สักวันหนึ่งหากหนูมีความเก่งกล้าหนูจะให้วิทยาทานคืนตอบแทนเหมือนกับ อจ.PichaiTC อจ. yeadram อจ.U&ME อจ. Teerapatและท่านอื่นๆคะ
มันเป็นการสร้างความดีที่ไม่สิ้นสุดจริงๆ อจ. ทุกท่านได้อนิสงค์แรงมากๆคะ
หนูก็ไม่ทราบว่าทำไมหน่วยคอมจึงออกแบบเก็บข้อมูลแบบนี้
เมื่อขอข้อมูล มาวิเคราะห์ก็จะติดตรงนี้ ไม่ได้ออกแบบเองคะ
หนูว่าบอร์ดนี้มีประโยชน์มากๆ ขอเรียกว่า อจ.ทุกคนเสียสละ
ทุ่มเทให้ความรู้เต็มที่โดยไม่ปิดบังคะ และรู้สึกเป็นหนี้บุญคุณคะ
สักวันหนึ่งหากหนูมีความเก่งกล้าหนูจะให้วิทยาทานคืนตอบแทนเหมือนกับ อจ.PichaiTC อจ. yeadram อจ.U&ME อจ. Teerapatและท่านอื่นๆคะ
มันเป็นการสร้างความดีที่ไม่สิ้นสุดจริงๆ อจ. ทุกท่านได้อนิสงค์แรงมากๆคะ
Time: 0.3834s
http://www.thai-access.com/yeadram_view.php?topic_id=2430
ซึ่งผมแนะนำว่าให้เปลี่ยนวิธีออกแบบตาราง หรือการใช้งานจะดีกว่า - ปกติผมจะไม่เคยเจอปัญหาแบบนี้ เพราะจะไม่ออกแบบให้ยุ่งยากแบบนี้ครับ
ซึ่งมักจะได้คำตอบว่า "แก้ไม่ได้ เพราะ...(อะไรก็แล้วแต่)"
ดังนั้นถ้าจะแก้ปัญหาที่ปลายเหตุก็ มีให้ 2 วิธีครับ
แบบ A: แปลงเป็น DateTime
1. ให้แปลงค่าเป็นแบบ datetime ก่อน ดีคืออยู่ในรูปแบบของ เลขที่ก่อนทศนิยมเป็นวัน(date) หลังทศนิยมเป็นเวลา(time) เพราะฉะนั้นต้องปรับฐานให้เป็นวันก่อน คือ 60 วินาที = 1 นาที, 60 นาที = 1 ชั่วโ
มง, 24 ชั่วโมง = 1 วัน
TempDateTime = InputSecond / 60 / 60 / 24
2. ค่าของวันที่ คือค่า integer ของ datetime
OutputDayValue = Int(TempDateTime )
3. ค่าของเวลา คือค่า หลังจุดทศนิยม ของ datetime ซึ่งถ้าต้องการแสดงแบบ hh:nn:ss อยู่แล้ว ไม่ต้องทำอะไร แค่กำหนด format หรือ วางใน textbox ที่เป็น format ดังกล่าว
OutputTimeValue = Format(TempDateTime, "hh:nn:ss")
แบบ B: แล้วดึงค่า ของแต่ละส่วนโดยการคำนวณ
หลักการเดิมครับ 60 วินาที = 1 นาที, 60 นาที = 1 ชั่วโมง, 24 ชั่วโมง = 1 วัน
1. หาค่าวัน จากการหาว่า กี่วินาที = กี่วัน
OutputDayValue = Int(InputSecond / 60 / 60 / 24)
2. หาค่าชั่วโมง จากเศษของวัน ว่า วินาทีที่เหลือจากตัดวันทิ้งจะเหลือกี่ชั่วโมง
OutputHourValue = (InputSecond /60 /60) mod 24
3. หาค่านาที จากเศษของชั่วโมง ว่า วินาทีที่เหลือจากตัดชั่วโมง(จะกี่วันไม่สน เพราะวันเป็นผลจากชั่วโมง) ทิ้งจะเหลือกี่นาที
OutputMinuteValue = (InputSecond / 60) mod 60
4. หาค่าวินาที จากเศษของนาที ว่า วินาทีที่เหลือจากตัดนาที ทิ้งจะเหลือกี่วินาที
OutputSecondValue = InputSecond mod 60
...
ขั้นสุดท้ายไม่ว่าจะแบบ A หรือ B ก็ทำการรวมผลให้อยู่ในรูปแบบที่ต้องการแสดงผลครับ
ประมาณนี้ครับ ไม่รับรองผล 100% นะครับเพราะคิดตอนง่วงแล้ว
ถ้าใครเจอที่ผิดฝากช่วยแก้ด้วยนะครับ หรือใครมีวิธีง่ายกว่านี้รบกวนแนะนำด้วยครับ
สุดท้ายขอถามครับ ว่า ทำไมถึงออกแบบให้เป็นแบบนี้ครับ มีเงื่อนไข และนำไปใช้งานอย่างไร?
รบกวนตอบด้วยนะครับ อยากทราบจริงๆ