programing

Float에서 날짜 시간 형식을 지정하는 방법

muds 2023. 5. 1. 22:07
반응형

Float에서 날짜 시간 형식을 지정하는 방법

전류를 표시하려고 합니다.DateTime순식간에Text위젯을 클릭합니다.다음은 가능하지만 형식을 변경하고 싶습니다.

현재 접근법

DateTime now = DateTime.now();
currentTime = new DateTime(now.year, now.month, now.day, now.hour, now.minute);
 Text('$currentTime'), 

결과

YYYY-MM-JJ HH-MM:00.000

질문.

어떻게 제거할 수 있습니까?:00.000파트?

사용할 수 있습니다.DateFormatintl 패키지에서.

import 'package:intl/intl.dart';

DateTime now = DateTime.now();
String formattedDate = DateFormat('yyyy-MM-dd – kk:mm').format(now);

더하다intl 소포를 당신에게pubspec.yaml파일.

import 'package:intl/intl.dart';

DateFormat dateFormat = DateFormat("yyyy-MM-dd HH:mm:ss");

DateTime 개체를 문자열로 변환하는 중

String string = dateFormat.format(DateTime.now());

문자열을 DateTime 개체로 변환하는 중

DateTime dateTime = dateFormat.parse("2019-07-19 8:40:23");

이 방법을 사용하면 라이브러리를 가져올 필요가 없습니다.

DateTime now = DateTime.now();

String convertedDateTime = "${now.year.toString()}-${now.month.toString().padLeft(2,'0')}-${now.day.toString().padLeft(2,'0')} ${now.hour.toString().padLeft(2,'0')}-${now.minute.toString().padLeft(2,'0')}";

산출량

2020-12-05 14:57

패키지를 사용해 보세요, Jiffy, 이것은 또한 Intl 위에서 실행되지만 momentjs 구문을 사용하는 것을 더 쉽게 합니다.아래 참조

import 'package:jiffy/jiffy.dart';   

var now = Jiffy().format("yyyy-MM-dd HH:mm:ss");

다음 작업도 수행할 수 있습니다.

var a = Jiffy().yMMMMd; // October 18, 2019

또한 DateTime 개체, 문자열 및 배열을 전달할 수 있습니다.

var a = Jiffy(DateTime(2019, 10, 18)).yMMMMd; // October 18, 2019

var a = Jiffy("2019-10-18").yMMMMd; // October 18, 2019

var a = Jiffy([2019, 10, 18]).yMMMMd; // October 18, 2019

이것이 제 간단한 해결책입니다.그것은 어떠한 의존성도 필요로 하지 않습니다.

그러나 날짜는 문자열 형식입니다.시간을 원하는 경우 하위 문자열 값을 변경합니다.

print(new DateTime.now()
            .toString()
            .substring(0,10)
     );   // 2020-06-10

이 함수 사용

todayDate() {
    var now = new DateTime.now();
    var formatter = new DateFormat('dd-MM-yyyy');
    String formattedTime = DateFormat('kk:mm:a').format(now);
    String formattedDate = formatter.format(now);
    print(formattedTime);
    print(formattedDate);
  }

출력:

08:41:AM
21-12-2019

0.16 이후로 약간의 변화가 있습니다. 그래서 제가 어떻게 했는지 여기 있습니다.

pubspec.dll로 가져오기

dependencies:
      flutter:
        sdk: flutter
      intl: ^0.16.1

그 다음에 사용

  txdate= DateTime.now()


  DateFormat.yMMMd().format(txdate)

사용할 수 있습니다.DateTime.now()또는clock.now()clock lib를 사용한 샘플:

import 'package:clock/clock.dart';

DateTime now = clock.now();
String formattedDate = DateFormat('yyyy-MM-dd – kk:mm').format(now);

이 구문을 사용할 수도 있습니다.YYY-MM-JJ HH-MM의 경우:

var now = DateTime.now();
var month = now.month.toString().padLeft(2, '0');
var day = now.day.toString().padLeft(2, '0');
var text = '${now.year}-$month-$day ${now.hour}:${now.minute}';

사용자가 미국 시민이지만 24시간 형식으로 모든 것을 보고 싶다면 어떻게 해야 합니까?
로케일을 기준으로 12/24시간 표시하면 사용자가 만족하지 않습니다.

 // getting system settings 12/24 h format
      if (MediaQuery.of(context).alwaysUse24HourFormat){
        timeFormat = new DateFormat("kk:mm", languageCode); //24h format
      }
      else{
        timeFormat = new DateFormat("KK:mm a", languageCode); //12h format
      }
//then use it:
 '${timeFormat.format DateTime.now())}'

문자열 분할 방법을 사용하여 :00.000을 제거합니다.

var formatedTime = currentTime.toString().split(':')
Text(formatedTime[0])

또는 YYY-MM-DDH에 대해 아래 코드를 사용합니다.MM: ==== 라이브러리를 사용하지 않는 SS 형식

var stringList =  DateTime.now().toIso8601String().split(new RegExp(r"[T\.]"));
var formatedDate = "${stringList[0]} ${stringList[1]}";
static String convertDateFormat(String dateTimeString, String oldFormat, String 
           newFormat) {
        DateFormat newDateFormat = DateFormat(newFormat);
        DateTime dateTime = DateFormat(oldFormat).parse(dateTimeString);
        String selectedDate = newDateFormat.format(dateTime);
        return selectedDate;
            }

이 메서드를 이렇게 부릅니다.

 convertDateFormat(inputDate, "dd-mm-yyyy", "d MMM yyyy");

추가 패키지를 설치하지 않고 가장 쉬운 직접적인 방법은

날짜 가져오기:

datetime.toIso8601String().split("T")[0];

시간 확보하기:

datetime.toIso8601String().split("T")[1];

다음을 위한 간단한 확장 방법은 어떻습니까?DateTime문자열을 여러 번 반복하고 각각 반복하기 때문에 런타임이 좋지 않을 수 있습니다.%형식 옵션.아마 한 번 걷고 교체할 수 있을 것입니다.%게걸스럽게

extension DateTimeFormat on DateTime {

  /// Supports the following, inspired by: https://linux.die.net/man/3/strptime
  /// %Y: The year, including century (for example, 1991).
  /// %m: The month number (1-12).
  /// %d: The day of month (1-31).
  /// %H: The hour (0-23).
  /// %M: The minute (0-59).
  /// %S: The second (0-59).
  String format(String formatString) {
    var hourString = hour.toString();
    var dayString = day.toString();
    var monthString = month.toString();
    var minuteString = minute.toString();
    var secondString = second.toString();
    var yearString = year.toString();

    var map = {
      '%H': hourString.padLeft(3 - hourString.length, '0'), // the pad values here are the desired length + 1
      '%d': dayString.padLeft(3 - dayString.length, '0'),
      '%m': monthString.padLeft(3 - monthString.length, '0'),
      '%M': minuteString.padLeft(3 - minuteString.length, '0'),
      '%S': secondString.padLeft(3 - secondString.length, '0'),
      '%Y': yearString.padLeft(5 - yearString.length, '0'),
    };
    return map.entries.fold(formatString, (acc, entry) => acc.replaceAll(entry.key, entry.value));
  }
}

용도:

print(DateTime(2021, 10, 16, 4, 4, 4, 4, 4).format('%Y-%m-%d-%H-%M-%S'));
// '2021-10-16-04-04-04'

자유롭게 변경 사항을 제안하십시오.

다트로 날짜를 포맷할 수 없기 때문에 외부 패키지를 사용해야 합니다. 이 기사를 추천합니다. https://www.geeksforgeeks.org/format-dates-in-flutter/

우사 에스타옵시온 큐드 퍼실리저:

static String formatDateTime(DateTime fecha, String formato) {
    var _index = 0;
    var _letra = '';
    var _fecha = '';
    var _auxiliar = '';
    //
    //Evalua todas las letras
    while (_letra != '[/]') {
      _letra = _index < formato.length ? formato[_index++] : '[/]';
      //
      //suma las letra para luego aplicarles el formato
      if (_auxiliar.isEmpty || _auxiliar[0] == _letra) {
        _auxiliar += _letra;

        continue;
      }
      //
      //aplica el formato de las letras acumuladas
      switch (_auxiliar) {
        case 'yy':
          _fecha += fecha.year.toString().substring(2);
          break;
        case 'yyyy':
          _fecha += fecha.year.toString();
          break;
        case 'M':
          _fecha += fecha.month.toString();
          break;
        case 'MM':
          _fecha +=
              fecha.month < 10 ? '0${fecha.month}' : fecha.month.toString();
          break;
        case 'd':
          _fecha += fecha.day.toString();
          break;
        case 'dd':
          _fecha += fecha.day < 10 ? '0${fecha.day}' : fecha.day.toString();
          break;
        case 'h':
          _fecha += 12 < fecha.hour
              ? (fecha.hour - 12).toString()
              : fecha.hour.toString();
          break;
        case 'hh':
          _fecha += fecha.hour < 10
              ? '0${fecha.hour}'
              : 12 < fecha.hour
                  ? (fecha.hour - 12).toString()
                  : fecha.hour.toString();
          break;
        case 'H':
          _fecha += fecha.hour.toString();
          break;
        case 'HH':
          _fecha += fecha.hour < 10 ? '0${fecha.hour}' : fecha.hour.toString();
          break;
        case 'm':
          _fecha += fecha.minute.toString();
          break;
        case 'mm':
          _fecha +=
              fecha.minute < 10 ? '0${fecha.minute}' : fecha.minute.toString();
          break;
        case 's':
          _fecha += fecha.second.toString();
          break;
        case 'ss':
          _fecha +=
              fecha.second < 10 ? '0${fecha.second}' : fecha.second.toString();
          break;
        case 't':
          _fecha += fecha.hour < 12 ? 'a' : 'p';
          break;
        case 'tt':
          _fecha += fecha.hour < 12 ? 'am' : 'pm';
          break;
        case 'f':
        case 'ff':
        case 'fff':
        case 'ffff':
          _fecha += fecha.millisecond.toString().substring(0, _auxiliar.length);
          break;
        case 'z':
          if (fecha.isUtc) {
            _fecha += '0';
          } else {
            _fecha +=
                (fecha.timeZoneOffset.inMinutes / 60).truncate().toString();
          }
          break;
        case 'zz':
          if (fecha.isUtc) {
            _fecha += '00';
          } else {
            var _horas = (fecha.timeZoneOffset.inMinutes / 60).truncate();

            _fecha += (fecha.timeZoneOffset.inMinutes < 0 ? '-' : '+') +
                (_horas < 10 ? '0$_horas' : _horas.toString());
          }
          break;
        case 'zzz':
          if (fecha.isUtc) {
            _fecha += '00:00';
          } else {
            _fecha += (fecha.timeZoneOffset.inMinutes < 0 ? '-' : '+') +
                formatDateTime(
                    DateTime.fromMillisecondsSinceEpoch(
                        fecha.timeZoneOffset.inMilliseconds),
                    'hh:mm');
          }
          break;
        default:
          _fecha += _auxiliar;
          break;
      }
      //
      //siguiente
      _auxiliar = _letra;
    }
    //
    //Fin
    return _fecha;
  }

Usalo de la sigiiente 마네라:

print(formatDateTime(DateTime.now().toUtc(), 'dd-MM-yyyy hh:mm tt'));
print(formatDateTime(DateTime.now().toUtc(), 'dd-MM-yyyy hh:mm tt (GTM zzz)'));
// 28-07-2022 04:52:59 pm
// 28-07-2022 04:52:59 pm (GTM -6:00)

엘케 노 레귀스트 엘 에스파뇰로 푸에데 트라두시르 콘 구글 코모하고요 콘 링글레스, 살루도.

언급URL : https://stackoverflow.com/questions/51579546/how-to-format-datetime-in-flutter

반응형