Pair Programming : ระบบคำนวณวันส่งของ
คุณและเพื่อนร่วมทีมจะพัฒนาโปรแกรมในภาษา Go ที่คำนวณวันส่งของโดยประมาณจากวันสั่งซื้อ (order creation date) และจำนวนวันที่ใช้ในการจัดส่ง (delivery days) โดยมีความต้องการดังนี้
1. รับข้อมูลเข้า (Input)
- Order Date รับวันและเวลาในรูปแบบ ISO 8601 (เช่น
2024-01-20T07:00:00+07:00
) ซึ่งเป็นวันสั่งซื้อ (created_at) - Delivery Days รับจำนวนวันที่ใช้ในการจัดส่ง (เช่น 3 หรือ 25)
- User Timezone รับ Timezone ของผู้ใช้ (เช่น
Asia/Bangkok
หรือEurope/London
)
2. การคำนวณ (Process)
- แปลง String ของ Order Date ที่รับเข้ามาให้เป็นค่า time.Time ด้วย Layout time.RFC3339
- แปลงเวลา Order Date ให้เป็นเวลา UTC ก่อนทำการคำนวณ (เพื่อหลีกเลี่ยงปัญหาการเปลี่ยนแปลงตาม DST)
- คำนวณวันส่งของโดยการเพิ่มจำนวนวันตามที่กำหนด (ใช้ AddDate)
- หลังจากคำนวณใน UTC แล้ว ให้แปลงผลลัพธ์กลับไปเป็นเวลาของ Timezone ที่ผู้ใช้ระบุ (ใช้ In(userLocation))
3. การแสดงผล (Output)
- แสดง Order Date ในรูปแบบ ISO 8601 ตาม Timezone ของผู้ใช้
- แสดง Estimated Delivery Date ในรูปแบบ ISO 8601 ตาม Timezone ของผู้ใช้
- แสดงจำนวนวัน (Duration) ที่คำนวณได้ระหว่าง Order Date กับ Estimated Delivery Date