You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

129 lines
3.1KB

  1. import 'dart:developer';
  2. import 'package:intl/intl.dart';
  3. extension formatDateTime on DateTime {
  4. String convertLocalDateTimeToStringUtcDateTime() {
  5. try {
  6. String utcDateString =
  7. DateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'").format(this.toUtc());
  8. return utcDateString;
  9. } catch (_) {
  10. return "";
  11. }
  12. }
  13. String displayDateTime_DDMMYYYY_HHmm() {
  14. try {
  15. return DateFormat("dd/MM/yyyy HH:mm").format(this);
  16. } catch (_) {
  17. return "";
  18. }
  19. }
  20. }
  21. extension ddMM_HHmm on String {
  22. //"2020-08-13T02:11:32Z" => 13/08 02:11
  23. // convert utc to local timezone
  24. String format_DDMM_HHmm() {
  25. try {
  26. final str = this.toString();
  27. var dateFromString =
  28. DateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'").parse(str, true).toLocal();
  29. return DateFormat("dd/MM HH:mm").format(dateFromString);
  30. } catch (_) {
  31. return "";
  32. }
  33. }
  34. // Convert server timezone + 0 -> local timezone
  35. String format_DDMMYY_HHmm() {
  36. try {
  37. final str = this.toString();
  38. var dateFromString =
  39. DateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'").parse(str, true).toLocal();
  40. return DateFormat("dd/MM/yyyy HH:mm").format(dateFromString);
  41. } catch (_) {
  42. return "";
  43. }
  44. }
  45. DateTime convertStringServerDateTimeToLocalDateTime() {
  46. return DateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'").parse(this, true).toLocal();
  47. }
  48. String formatStringToStringDecimal() {
  49. try {
  50. var numOfString = double.tryParse(this.toString());
  51. var numWithLocalSeparator = new NumberFormat.decimalPattern("vi_VN");
  52. final str = numWithLocalSeparator.format(numOfString);
  53. return str;
  54. } catch (_) {
  55. return "";
  56. }
  57. }
  58. }
  59. extension numToString on num {
  60. String formatNumtoStringDecimal() {
  61. try {
  62. var numWithLocalSeparator = new NumberFormat.decimalPattern("vi_VN");
  63. final str = numWithLocalSeparator.format(this);
  64. return str;
  65. } catch (_) {
  66. return "";
  67. }
  68. }
  69. }
  70. extension HHmm on Duration {
  71. String formatHHmm() {
  72. //1:34:00.000000
  73. final str = this.toString();
  74. final texts = str.split(":");
  75. final textHour = texts[0].padLeft(2, '0');
  76. final textMinute = texts[1].padLeft(2, '0');
  77. return "${textHour}h ${textMinute}m";
  78. }
  79. }
  80. extension FormatNumber on int {
  81. String formatDecimalThousand() {
  82. //1403 -> 1,403
  83. var f = new NumberFormat.decimalPattern("vi_VN");
  84. return f.format(this);
  85. }
  86. }
  87. extension FormatNumberToDecimal on double {
  88. String formatDecimalThousand() {
  89. var f = new NumberFormat.decimalPattern("vi_VN");
  90. return f.format(this);
  91. }
  92. }
  93. extension FormatDate on int {
  94. String MMM_dd_yyyy() {
  95. return DateFormat("MMM dd, yyyy")
  96. .format(DateTime.fromMillisecondsSinceEpoch(this * 1000));
  97. }
  98. }
  99. extension DoubleParsing on String {
  100. double parseDoubleThousand() {
  101. var newValue = this.replaceAll(".", "");
  102. var changeToServerFormat = newValue.replaceAll(",", ".");
  103. return double.tryParse(changeToServerFormat);
  104. }
  105. }
  106. extension IntParsing on String {
  107. int parseIntThousand() {
  108. var newValue = this.replaceAll(".", "");
  109. var changeToServerFormat = newValue.replaceAll(",", ".");
  110. return int.tryParse(changeToServerFormat);
  111. }
  112. }