วันจันทร์ที่ 20 มกราคม พ.ศ. 2557

กับดัก iso8601 ของ .Net

งมกับ DateTime ทั้งวัน Insert Record เข้าไปแล้ว Data ก็เดียวกัน ทำไม Query กลับมาไม่เจอ ผีหลอก!!!

ตอน Insert นี่ผมใช้ Erlang parse iso8601 มาเป็น Tuple แล้วใช้ ErlSQL จัดการ statement โดย parse DateTime format ที่ได้มาจาก XML ที่สร้างจาก .NET ตัวอย่าง

2013-08-30T14:26:58.1620093+07:00

ISO8601 ใน Erlang Parse ออกมาได้เป็น {{2013,8,30},{7,26,58}} โดยเอา +7:00 มาคิด ลดเวลาให้เป็น GMT +0:00 ซึ่งก็น่าจะถูก 

เวลาที่ได้คือ 7:26:58

แต่ Code .NET หาไม่เจอ!!!! ฉิบหายละ!!!!

.NET อ่าน XML file เดียวกัน Data เดียวกัน แต่ไม่ใช้ +7:00 มาคำนวน จาก XML ได้เป็น 14:26:58 ไม่เอา +7:00 มาคิด!!!!

ถ้า Iso8601 ของ Erlang ถูก...ซึ่งผมต้อง port .NET service มาเป็น Erlang แล้วข้อมูลเดิมล่ะ...

ถ้า .NET ถูกคงไม่มีปัญหาอะไร เดี๋ยวทำ Erlang ให้ผิดตามก็ได้

พอเข้าไปดู http://www.timestampgenerator.com/
แล้วลอง Generate ISO8601 ดู อ้าว Erlang ถูกนะ งั้น .NET framework (2.0) ก็ Bug น่ะสิ... เวรละ.... 

หรือเพราะ .NET ฉลาด!!! ดู Local time จาก Control Panel แล้วเทียบเวลา โดยไม่แปลง เวลาให้ลดลง 7 ชม. (ให้เป็น GMT) เพราะเข้าใจว่า มันคือ Local time zone

แล้วเวลาที่ได้มา 14:26:58 มันคือการบันทึกตอนไหน? ตอน 7:26:58 หรือ ตอน 14:26:58 

ต้องไปหาที่มาของเวลาแล้วค่อยกลับมาหาว่า ควรจะปรับใครยังไงอีกที

ไงละ แค่ DateTime :'(

ไม่มีความคิดเห็น:

แสดงความคิดเห็น