我现在尝试向我的日期时间对象添加偏移时间, 但它没有显示实际时间的增加时间。 这是我在 android studio 中的 flutter 项目。
void getTime() async {
Response response = await
get('http://worldtimeapi.org/api/timezone/Asia/Karachi');
Map data = jsonDecode(response.body);
String datetime = data['datetime'];
String offset = data['utc_offset'].substring(1,3);
print(offset);
DateTime now = DateTime.parse(datetime);
now.add(Duration(hours: int.parse('offset')));
print(now);
}
@override
void initState() {
super.initState();
getTime();
}
你的代码有两个问题:
offset
传递给 int.parse 而不是 'offset'
add
是对 DateTime
对象的不可变操作。它不会更改 DataTime
对象,但会返回一个新对象。试试这个:
DateTime dateTimeAfterOffset = DateTime.parse(datetime).add(
Duration(
hours: int.parse(offset),
),
);
```
我找到了解决方案。耶耶耶!
void getTime() async {
//Make the request
Response response = await get('http://worldtimeapi.org/api/timezone/Asia/Karachi');
Map data = jsonDecode(response.body);
print(data);
//Get properties from data
String datetime = data['datetime'];
String offset = data['utc_offset'].substring(1,3);
//print(datetime);
print(offset);
//create DateTime Object
DateTime now = DateTime.parse(datetime);
now = now.add(Duration(hours: int.parse(offset)));
print(now);
}
@override
void initState() {
super.initState();
getTime();
}
但是下面的示例代码会帮助您进行任何类型的偏移
void getTime() async {
var httpsUri = Uri(
scheme: 'http',
host: 'worldtimeapi.org',
path: '/api/timezone/Asia/Kolkata');
Response response = await get(httpsUri);
Map data = jsonDecode(response.body);
//print('data is ${response.body}');
//get properties from data
String dateTime = data['datetime'];
String offset = data['utc_offset'];
offset = offset.replaceAll("+", "");
/// String offset1 = data['utc_offset'].substring(1, 3);
print('date=>$dateTime,offset=>$offset');
//date time object
DateTime now = DateTime.parse(dateTime);
print('Final date before:$now');
now = now.add(Duration(
hours: int.parse(offset.split(':')[0]),
minutes: int.parse(offset.split(':')[1])));
print('Final date after:$now');
}