Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 如何将两个字符串小时和分钟与AM/PM进行比较?_Flutter_Dart - Fatal编程技术网

Flutter 如何将两个字符串小时和分钟与AM/PM进行比较?

Flutter 如何将两个字符串小时和分钟与AM/PM进行比较?,flutter,dart,Flutter,Dart,当我的用户检查应用程序时,我需要向他显示商店是开着还是关着 我(在Firestore中)以字符串形式存储了商店的开店和关门时间。 至于当前时间,我可以从DateTime.now()获取,然后用intl包格式化它 DateTime now = DateTime.now(); String time = DateFormat.jm().format(now); String opening = snapshot.data.get('opening'); String closing = snaps

当我的用户检查应用程序时,我需要向他显示商店是开着还是关着

我(在Firestore中)以字符串形式存储了商店的开店和关门时间。 至于当前时间,我可以从
DateTime.now()
获取,然后用
intl
包格式化它

DateTime now = DateTime.now();

String time = DateFormat.jm().format(now);
String opening = snapshot.data.get('opening');
String closing = snapshot.data.get('closing');


print(time);     // 9:49 PM
print(opening);  // 7:00 AM
print(closing);  // 1:00 PM

但是现在我如何比较这些字符串以了解存储在当前时间是打开的还是关闭的?

您可以使用
DateTime.compareTo()
方法来比较两个DateTime对象。如果DateTime对象在[other]之后,则返回1;如果它们完全相同,则返回0;如果DateTime对象在[other]之前,则返回-1

要比较字符串,可以使用
DateTime.parse()
方法。传入一个字符串,它会将其转换为日期时间。它需要很多不同的字符串日期格式

///编辑

我个人会使用
DateTime.toIso8601String()
对字符串进行格式化,以简化格式化过程,但这取决于您

您可以使用
.toIso8601StringFormat
节省时间,并使用
.parse
方法解析它。要将其从DateTime转换为所述的字符串格式,可以使用以下方法:

static String dateTimeString(DateTime dt) {
   String dateString;

    var diff = DateTime.now().toLocal().difference(dt.toLocal());
    var todayFormat = DateFormat("h:mm a");

    dateString += todayFormat.format(dt.toLocal());

 return dateString;
}
var now=DateTime.now();
var currenthour=(now.hour*60)+now.minute;
int opentime=9*60;
int closetime=13*60;
字符串shoptiming=currenthour>opentime&¤thour
我希望它们存储在UTC中。否则,更改手机显示的时间(或者只是在不同的时区)并获取错误的打开和关闭值是微不足道的。用户和他们跟踪的商店位于同一个城市,彼此之间的距离不超过数百米。我不会在电话时间不正确的时候处理这个案子。这取决于用户,而且这个功能无论如何都不重要。这只是一个很好的视觉效果。这是我第一次学习UTC格式的用例:)。感谢utc使用var now=DateTime.now().toUtc();时间格式(凌晨1:00)对于
DateTime.parse()
无效。如果我可以将时间转换为Datetime对象,问题会立即得到解决,但我找不到方法。
 var now = DateTime.now();
var currenthour = (now.hour * 60) + now.minute;
int opentime = 9 * 60;
int closetime = 13 * 60;
String shoptiming = currenthour > opentime && currenthour < closetime
  ? "show open"
  : "shopclose";

print(shoptiming);