ฉันรู้ว่าฉันสามารถทำอะไรได้บ้าง แต่น่าอายฉันมีเวลาที่ยากลำบากในการพยายามทำสิ่งที่ดูเหมือนง่าย: ได้รับความแตกต่างระหว่าง 2 ครั้ง
ตัวอย่าง:
var now = "04/09/2013 15:00:00";
var then = "04/09/2013 14:20:30";
//expected result:
"00:39:30"
สิ่งที่ฉันพยายาม:
var now = moment("04/09/2013 15:00:00");
var then = moment("04/09/2013 14:20:30");
console.log(moment(moment.duration(now.diff(then))).format("hh:mm:ss"))
//outputs 10:39:30
ฉันไม่เข้าใจว่า "10" นั่นคืออะไร ฉันอาศัยอยู่ในบราซิลดังนั้นเราจึง utc-0300 ถ้ามันเกี่ยวข้อง
ผลลัพธ์ของmoment.duration(now.diff(then))
คือช่วงเวลาที่มีค่าภายในที่ถูกต้อง:
days: 0
hours: 0
milliseconds: 0
minutes: 39
months: 0
seconds: 30
years: 0
ดังนั้นฉันเดาคำถามของฉันคือวิธีการแปลงช่วงเวลาเป็นช่วงเวลา? ฉันแน่ใจว่าสามารถใช้
duration.get("hours") +":"+ duration.get("minutes") +:+ duration.get("seconds")
แต่ฉันรู้สึกว่ามีบางสิ่งที่หรูหรากว่าที่ฉันขาดหายไปอย่างสิ้นเชิง
อัปเดต
มองใกล้ขึ้นในตัวอย่างด้านบนnow
คือ:
Tue Apr 09 2013 15:00:00 GMT-0300 (E. South America Standard Time)…}
และmoment(moment.duration(now.diff(then)))
คือ:
Wed Dec 31 1969 22:39:30 GMT-0200 (E. South America Daylight Time)…}
ฉันไม่แน่ใจว่าทำไมค่าที่สองอยู่ในเวลาตามฤดูกาล (-0200) ... แต่ฉันแน่ใจว่าฉันไม่ชอบวันที่ :(
อัปเดต 2
ค่าคือ -0200 อาจเป็นเพราะ 31/12/1969 เป็นวันที่มีการใช้เวลาตามฤดูกาล ... ดังนั้นก็เป็นเช่นนั้น