|
|
@@ -52,8 +52,14 @@ fn main() { |
|
|
|
.help("display unix timestamp in seconds, instead of default nanoseconds") |
|
|
|
.long("seconds") |
|
|
|
.short("s") |
|
|
|
.requires("unix") |
|
|
|
.conflicts_with_all(&["rfc2822", "timespec"]) |
|
|
|
.conflicts_with_all(&["rfc2822", "timespec", "millis"]) |
|
|
|
.required(false) |
|
|
|
.takes_value(false)) |
|
|
|
.arg(clap::Arg::with_name("millis") |
|
|
|
.help("display unix timestamp in milliseconds, instead of default nanoseconds") |
|
|
|
.long("millis") |
|
|
|
.short("m") |
|
|
|
.conflicts_with_all(&["rfc2822", "timespec", "seconds"]) |
|
|
|
.required(false) |
|
|
|
.takes_value(false)) |
|
|
|
.arg(clap::Arg::with_name("timespec") |
|
|
@@ -70,13 +76,17 @@ fn main() { |
|
|
|
.required(false)) |
|
|
|
.arg(clap::Arg::with_name("unix-to-rfc3339") |
|
|
|
.long("unix-to-rfc3339") |
|
|
|
.short("R") |
|
|
|
.alias("unix-to-utc") |
|
|
|
.help("convert integer unix timestamp (nanoseconds precision) to datetime in rfc3339 format") |
|
|
|
.help("convert integer unix timestamp (nanoseconds precision) to datetime \ |
|
|
|
in rfc3339 format. combine with --seconds or --millis to parse a |
|
|
|
seconds timestamp with alternate precison") |
|
|
|
.takes_value(true) |
|
|
|
.required(false) |
|
|
|
.conflicts_with_all(&["unix", "seconds"])) |
|
|
|
.conflicts_with_all(&["unix"])) |
|
|
|
.arg(clap::Arg::with_name("rfc3339-to-unix") |
|
|
|
.long("rfc3339-to-unix") |
|
|
|
.short("U") |
|
|
|
.alias("utc-to-unix") |
|
|
|
.help("parse rfc3339 timestamp and display it as a unix timestamp") |
|
|
|
.takes_value(true) |
|
|
@@ -89,6 +99,15 @@ fn main() { |
|
|
|
|
|
|
|
if let Some(ts_str) = args.value_of("unix-to-rfc3339") { // either parse --unix-to-rfc3339 input |
|
|
|
match u64::from_str(ts_str) { |
|
|
|
|
|
|
|
// check alternate precisions --seconds or --millis |
|
|
|
|
|
|
|
Ok(seconds) if args.is_present("seconds") => nanos_to_timespec(seconds * ONE_SECOND), |
|
|
|
|
|
|
|
Ok(millis) if args.is_present("millis") => nanos_to_timespec(millis * 1_000_000), |
|
|
|
|
|
|
|
// otherwise go with default nanos |
|
|
|
|
|
|
|
Ok(nanos) => nanos_to_timespec(nanos), |
|
|
|
|
|
|
|
Err(e) => { |
|
|
@@ -124,7 +143,8 @@ fn main() { |
|
|
|
|
|
|
|
if args.is_present("seconds") { // unix seconds |
|
|
|
print!("{}{}", sec, endline); |
|
|
|
|
|
|
|
} else if args.is_present("millis") { // unix millis |
|
|
|
print!("{}{}", timespec_to_nanos(sec, nsec) / 1_000_000, endline); |
|
|
|
} else { // unix nanos |
|
|
|
print!("{}{}", timespec_to_nanos(sec, nsec), endline); |
|
|
|
} |
|
|
|