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.

147 lines
3.6KB

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