datetime.dart 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. import 'package:date_format/date_format.dart';
  2. import 'package:intl/intl.dart';
  3. abstract class DataTimeUtils {
  4. /// 转成UTC字符串
  5. static String convertToUTCString(DateTime date) {
  6. // final utcFormatter = DateFormat('yyyy-MM-ddTHH:mm:ssZ');
  7. // final utcString = utcFormatter.format(date.toUtc());
  8. // return utcString;
  9. return formatDate(date.toUtc(),
  10. [yyyy, '-', mm, '-', dd, 'T', HH, ':', nn, ':', ss, ' ', Z]);
  11. }
  12. static String formatDateString(DateTime date) {
  13. return formatDate(date, [yyyy, '-', mm, '-', dd]);
  14. }
  15. static String convertToLocalString(DateTime date) {
  16. return formatDate(
  17. date.toLocal(), [yyyy, '-', mm, '-', dd, ' ', HH, ':', nn, ':', ss]);
  18. }
  19. /// UTC字符串转DateTime
  20. static DateTime convertFromUTCString(String utcString) {
  21. final utcFormatter = DateFormat('yyyy-MM-ddTHH:mm:ssZ');
  22. final dateTime = utcFormatter.parseUtc(utcString);
  23. return dateTime;
  24. }
  25. static DateTime convertFromDateString(String utcString) {
  26. final utcFormatter = DateFormat('yyyy-MM-dd');
  27. final dateTime = utcFormatter.parseUtc(utcString);
  28. return dateTime;
  29. }
  30. /// 计算年龄
  31. static String calculateAge(DateTime birthDate) {
  32. DateTime currentDate = DateTime.now();
  33. int age = currentDate.year - birthDate.year;
  34. if (currentDate.month < birthDate.month ||
  35. (currentDate.month == birthDate.month &&
  36. currentDate.day < birthDate.day)) {
  37. age--;
  38. }
  39. return age.toString();
  40. }
  41. static DateTime extractBirthDateFromIDCard(String idCardNumber) {
  42. final idCardRegex = RegExp(r'^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})(\d|X)$');
  43. final match = idCardRegex.firstMatch(idCardNumber);
  44. if (match != null) {
  45. final year = int.parse(match.group(2)!);
  46. final month = int.parse(match.group(3)!);
  47. final day = int.parse(match.group(4)!);
  48. final birthDate = DateTime(year, month, day);
  49. return birthDate;
  50. }
  51. return DateTime(1970, 1, 1); // 返回一个默认值,表示无法提取出生日期
  52. }
  53. }