将DateTime Zone转换为其他DateTime Zone



我正在获取utc格式的日期时间,并希望将其转换为不同的时区。

字符串utcTime是我从API得到的。timeZone是我想要转换的时间。我正在使用时区包从pub.dev返回语句不工作,我得到相同的值,我在输入中给出。如。我给出的是2023-03-30 13:51:11.130391,得到的也是2023-03-30 13:51:11.130391。

请帮忙,如果有其他方法我可以接近,请告诉我。

String formatdatetime(String utcTime,String timeZone) {
tz.initializeTimeZones();
final DateTime now = DateTime.parse(utcTime);
print(now);
final Location pacificTimeZone = tz.getLocation("Asia/Kolkata");
print(tz.TZDateTime.from(now, pacificTimeZone));
return DateFormat('dd/MM/yy hh:mm aa').format(tz.TZDateTime.from(now, pacificTimeZone));
}

对您的示例进行以下修改:

import 'package:intl/intl.dart';
import 'package:timezone/standalone.dart' as tz;
void main(List<String> args) async {
await tz.initializeTimeZone();
const time = '2023-03-30 13:51:11.130391';
final result = formatdatetime(time, 'Asia/Kolkata');
}
String formatdatetime(String utcTime, String timeZone) {
final DateTime now = DateTime.parse(utcTime);
print('UTC:      $now');
final tz.Location toZone = tz.getLocation(timeZone);
final adjusted = tz.TZDateTime.from(now, toZone);
print('Adjusted: $adjusted');
return DateFormat('dd/MM/yy hh:mm aa').format(adjusted);
}

一些附加建议:不要直接从UTC ISO-8601字符串转换为本地时间字符串。把这个字符串解析成一个DateTime对象,确保它是UTC格式的,然后把它留在内存中如果你把它保存在某个地方的话。只有在必要时才将其转换为本地时间,例如当它显示在UI中时。在强类型和一致的格式中使用时间可以在将来省去很多麻烦。

最新更新