Skip to content

Instantly share code, notes, and snippets.

@manofi21
Created October 1, 2021 15:59
Show Gist options
  • Select an option

  • Save manofi21/d67feab25031ab453abc5d07bacde1a3 to your computer and use it in GitHub Desktop.

Select an option

Save manofi21/d67feab25031ab453abc5d07bacde1a3 to your computer and use it in GitHub Desktop.

https://stackoverflow.com/questions/69096796/how-to-convert-yyyy-mm-ddthhmmss-sssz-on-laravel-api-or-flutter-view

cause :

mungkin itu disebabkan timezone php dan timezone db beda,

jadi isi si db sama laravel dianggap bukan waktu utc sama si php diconvert jadi waktu utc alias dipotong 7 jam.

real solution :

Jadi sebaiknya semua yg di handle backend utc default +00 ya, tinggal si frontend aja yg ubah sesuai timezone users .

Kadang rancu dan sedikit bingung management waktu dsini ntah mana data asli nya , user yg beda time zone dan server zone nerima zone utc.

misal user di jakarta chatting dengan orang sulawesi pada waktu yang sama

kalau devicenya ngirim waktu local ke server dan di server disimpan apa adanya. kan jadi beda dua jam tersimpan di server. padahal kejadiannya bareng.

// Suppose Result
final sqlDb = "2021-09-29T09:00:00.000Z";
// Reponce yang terjadi karena Beckend mengurangi DateTime dengan offset
final rawResponce = "2021-09-29T02:00:00.000Z";
// Date format dari Beckend.
final format = DateFormat("yyyy-MM-ddTHH:mm:ss.SSSZ");
print("format : $format"); // Instance of 'DateFormat'
// Parse response to DateTime according to [format]
final falseLocal = format.parse(rawResponce);
print("falseLocal : $falseLocal"); // 2021-09-29 02:00:00.000;
// Return timeZoneOffset The time zone offset (the difference between local time and UTC).
final offset = falseLocal.timeZoneOffset;
print("offset : $offset"); // 7:00:00.000000
// Return prefious reposponce + offset
final trueLocal = falseLocal.add(offset);
print("trueLocal : $trueLocal");
// -----------------------------
// Another Result method
// Parse response to DateTime according to [format] and utc is true
final timeUtc = format.parse(rawResponce, true);
print("timeUtc : $timeUtc"); // 2021-09-29 02:00:00.000Z
// return dengan toLocal
final timeLocal = timeUtc.toLocal();
print("trueLocal : $timeLocal"); // 2021-09-29 09:00:00.000
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment