aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/datetime.rs5
-rw-r--r--tests/valid.rs3
-rw-r--r--tests/valid/datetime-truncate.json6
-rw-r--r--tests/valid/datetime-truncate.toml1
4 files changed, 14 insertions, 1 deletions
diff --git a/src/datetime.rs b/src/datetime.rs
index f39d9fa..810a4d7 100644
--- a/src/datetime.rs
+++ b/src/datetime.rs
@@ -218,7 +218,10 @@ impl FromStr for Datetime {
return Err(DatetimeParseError { _private: () })
}
chars = whole[end..].chars();
- match format!("0.{}", &whole[..end]).parse() {
+
+ // truncate to picoseconds precision
+ let last = if end > 12 { 12 } else { end };
+ match format!("0.{}", &whole[..last]).parse() {
Ok(f) => f,
Err(_) => return Err(DatetimeParseError { _private: () }),
}
diff --git a/tests/valid.rs b/tests/valid.rs
index 676fc67..b3cc096 100644
--- a/tests/valid.rs
+++ b/tests/valid.rs
@@ -190,6 +190,9 @@ test!(example_bom,
include_str!("valid/example-bom.toml"),
include_str!("valid/example.json"));
+test!(datetime_truncate,
+ include_str!("valid/datetime-truncate.toml"),
+ include_str!("valid/datetime-truncate.json"));
test!(table_array_nest_no_keys,
include_str!("valid/table-array-nest-no-keys.toml"),
include_str!("valid/table-array-nest-no-keys.json"));
diff --git a/tests/valid/datetime-truncate.json b/tests/valid/datetime-truncate.json
new file mode 100644
index 0000000..34a432f
--- /dev/null
+++ b/tests/valid/datetime-truncate.json
@@ -0,0 +1,6 @@
+{
+ "bestdayever": {
+ "type": "datetime",
+ "value": "1987-07-05T17:45:00.123456789012Z"
+ }
+}
diff --git a/tests/valid/datetime-truncate.toml b/tests/valid/datetime-truncate.toml
new file mode 100644
index 0000000..05de841
--- /dev/null
+++ b/tests/valid/datetime-truncate.toml
@@ -0,0 +1 @@
+bestdayever = 1987-07-05T17:45:00.123456789012345Z