jiff::fmt::strtime

Struct Display

Source
pub struct Display<'f> { /* private fields */ }
Expand description

A “lazy” implementation of std::fmt::Display for strftime.

Values of this type are created by the strftime methods on the various datetime types in this crate. For example, Zoned::strftime.

A Display captures the information needed from the datetime and waits to do the actual formatting when this type’s std::fmt::Display trait implementation is actually used.

§Errors and panics

This trait implementation returns an error when the underlying formatting can fail. Formatting can fail either because of an invalid format string, or if formatting requires a field in BrokenDownTime to be set that isn’t. For example, trying to format a DateTime with the %z specifier will fail because a DateTime has no time zone or offset information associated with it.

Note though that the std::fmt::Display API doesn’t support surfacing arbitrary errors. All errors collapse into the unit std::fmt::Error struct. To see the actual error, use BrokenDownTime::format, BrokenDownTime::to_string or strtime::format. Unfortunately, the std::fmt::Display trait is used in many places where there is no way to report errors other than panicking.

Therefore, only use this type if you know your formatting string is valid and that the datetime type being formatted has all of the information required by the format string. For most conversion specifiers, this falls in the category of things where “if it works, it works for all inputs.” Unfortunately, there are some exceptions to this. For example, the %y modifier will only format a year if it falls in the range 1969-2068 and will otherwise return an error.

§Example

This example shows how to format a zoned datetime using Zoned::strftime:

use jiff::{civil::date, fmt::strtime, tz};

let zdt = date(2024, 7, 15).at(16, 24, 59, 0).in_tz("America/New_York")?;
let string = zdt.strftime("%a, %-d %b %Y %T %z").to_string();
assert_eq!(string, "Mon, 15 Jul 2024 16:24:59 -0400");

Or use it directly when writing to something:

use jiff::{civil::date, fmt::strtime, tz};

let zdt = date(2024, 7, 15).at(16, 24, 59, 0).in_tz("America/New_York")?;

let string = format!("the date is: {}", zdt.strftime("%-m/%-d/%-Y"));
assert_eq!(string, "the date is: 7/15/2024");

Trait Implementations§

Source§

impl<'f> Debug for Display<'f>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'f> Display for Display<'f>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl<'f> Freeze for Display<'f>

§

impl<'f> RefUnwindSafe for Display<'f>

§

impl<'f> Send for Display<'f>

§

impl<'f> Sync for Display<'f>

§

impl<'f> Unpin for Display<'f>

§

impl<'f> UnwindSafe for Display<'f>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.