嘗試轉換DateTime.now()為:2019-06-04T12:08:56.235-0700
API 檔案堅持認為這是資料格式:yyyy-MM-dd'T'HH:mm:ss.SSS'Z'但我無法為 Dart 弄清楚。甚至沒有python。
我試過了,now.toIso8601String()但它并沒有完全確定(即2019-12-03T17:50:23.476164)。它缺少最后-一部分和一位數字。flutter 中的 API 呼叫會回傳 a{code:415 message HTTP 415 Unsupported Media Type}作為結果。
我錯過了什么?
uj5u.com熱心網友回復:
看來,對于intl/intl.dart DateFormat類,時區尚未實作。
以下字符是保留的,目前未實作:
| 象征 | 意義 | 介紹 | 例子 |
|---|---|---|---|
| z | 時區 | (文本) | 太平洋標準時間 |
| Z | 時區 (RFC 822) | (數字) | -0800 |
| v | 時區(通用) | (文本) | 太平洋時間 |
uj5u.com熱心網友回復:
就像@hata 指出的那樣,它還沒有實施。因此,要完全按照要求添加 Z(時區為數字),我這樣做了:
String formatISOTime(DateTime date) {
//converts date into the following format:
// or 2019-06-04T12:08:56.235-0700
var duration = date.timeZoneOffset;
if (duration.isNegative)
return (DateFormat("yyyy-MM-ddTHH:mm:ss.mmm").format(date)
"-${duration.inHours.toString().padLeft(2, '0')}${(duration.inMinutes - (duration.inHours * 60)).toString().padLeft(2, '0')}");
else
return (DateFormat("yyyy-MM-ddTHH:mm:ss.mmm").format(date)
" ${duration.inHours.toString().padLeft(2, '0')}${(duration.inMinutes - (duration.inHours * 60)).toString().padLeft(2, '0')}");
}
實施的:
void main() {
DateTime getCurrentTimestamp = DateTime.now();
print('agreement signed');
String agreementSigned = formatISOTime(getCurrentTimestamp);
print(agreementSigned);
}
運行時:
main();
// Result:
2021-10-29T17:53:56.053 0100
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/342513.html
