mirror of
https://github.com/nushell/nushell.git
synced 2025-05-22 02:40:49 +02:00
try to fix datetime-diff
for ms, us, ns
This commit is contained in:
parent
b0f9cda9b5
commit
dad810ac33
@ -79,7 +79,7 @@ def borrow-minute [from: record, current: record] {
|
|||||||
|
|
||||||
def borrow-second [from: record, current: record] {
|
def borrow-second [from: record, current: record] {
|
||||||
mut current = $current
|
mut current = $current
|
||||||
$current.nanosecond = $current.nanosecond + 1_000_000_000
|
$current.millisecond = $current.millisecond + 1_000
|
||||||
$current.second = $current.second - 1
|
$current.second = $current.second - 1
|
||||||
if $current.second < 0 {
|
if $current.second < 0 {
|
||||||
$current = (borrow-minute $from $current)
|
$current = (borrow-minute $from $current)
|
||||||
@ -88,19 +88,41 @@ def borrow-second [from: record, current: record] {
|
|||||||
$current
|
$current
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def borrow-millisecond [from: record, current: record] {
|
||||||
|
mut current = $current
|
||||||
|
$current.microsecond = $current.microsecond + 1_000
|
||||||
|
$current.millisecond = $current.millisecond - 1
|
||||||
|
if $current.millisecond < 0 {
|
||||||
|
$current = (borrow-second $from $current)
|
||||||
|
}
|
||||||
|
|
||||||
|
$current
|
||||||
|
}
|
||||||
|
|
||||||
|
def borrow-microsecond [from: record, current: record] {
|
||||||
|
mut current = $current
|
||||||
|
$current.nanosecond = $current.nanosecond + 1_000
|
||||||
|
$current.microsecond = $current.microsecond - 1
|
||||||
|
if $current.microsecond < 0 {
|
||||||
|
$current = (borrow-borrow-millisecond $from $current)
|
||||||
|
}
|
||||||
|
|
||||||
|
$current
|
||||||
|
}
|
||||||
|
|
||||||
# Subtract later from earlier datetime and return the unit differences as a record
|
# Subtract later from earlier datetime and return the unit differences as a record
|
||||||
@example "Get the difference between two dates" {
|
@example "Get the difference between two dates" {
|
||||||
dt datetime-diff 2023-05-07T04:08:45+12:00 2019-05-10T09:59:12-07:00
|
dt datetime-diff 2023-05-07T04:08:45.582926123+12:00 2019-05-10T09:59:12.967486456-07:00
|
||||||
} --result {
|
} --result {
|
||||||
year: 3,
|
year: 3,
|
||||||
month: 11,
|
month: 11,
|
||||||
day: 26,
|
day: 26,
|
||||||
hour: 23,
|
hour: 23,
|
||||||
minute: 9,
|
minute: 9,
|
||||||
second: 33,
|
second: 32,
|
||||||
millisecond: 0,
|
millisecond: 615,
|
||||||
microsecond: 0,
|
microsecond: 439,
|
||||||
nanosecond: 0,
|
nanosecond: 667,
|
||||||
}
|
}
|
||||||
export def datetime-diff [
|
export def datetime-diff [
|
||||||
later: datetime, # a later datetime
|
later: datetime, # a later datetime
|
||||||
@ -149,14 +171,20 @@ export def datetime-diff [
|
|||||||
$result = (borrow-minute $from_expanded $result)
|
$result = (borrow-minute $from_expanded $result)
|
||||||
}
|
}
|
||||||
|
|
||||||
$result.nanosecond = $from_expanded.nanosecond - $to_expanded.nanosecond
|
$result.millisecond = $from_expanded.millisecond - $to_expanded.millisecond
|
||||||
if $result.nanosecond < 0 {
|
if $result.millisecond < 0 {
|
||||||
$result = (borrow-second $from_expanded $result)
|
$result = (borrow-second $from_expanded $result)
|
||||||
}
|
}
|
||||||
|
|
||||||
$result.millisecond = ($result.nanosecond / 1_000_000 | into int) # don't want a float
|
$result.microsecond = $from_expanded.microsecond - $to_expanded.microsecond
|
||||||
$result.microsecond = (($result.nanosecond mod 1_000_000) / 1_000 | into int)
|
if $result.microsecond < 0 {
|
||||||
$result.nanosecond = ($result.nanosecond mod 1_000 | into int)
|
$result = (borrow-millisecond $from_expanded $result)
|
||||||
|
}
|
||||||
|
|
||||||
|
$result.nanosecond = $from_expanded.nanosecond - $to_expanded.nanosecond
|
||||||
|
if $result.nanosecond < 0 {
|
||||||
|
$result = (borrow-microsecond $from_expanded $result)
|
||||||
|
}
|
||||||
|
|
||||||
$result
|
$result
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user