Struct DateTime

Source
pub struct DateTime {
    pub year: u16,
    pub month: u8,
    pub day: u8,
    pub hour: u8,
    pub minute: u8,
    pub second: u8,
    pub nanosecond: Option<u32>,
    pub offset: Option<i16>,
}
Expand description

A struct used to parse a DateTime field.

§Examples

use exif::DateTime;
let dt = DateTime::from_ascii(b"2016:05:04 03:02:01")?;
assert_eq!(dt.year, 2016);
assert_eq!(dt.to_string(), "2016-05-04 03:02:01");

Fields§

§year: u16§month: u8§day: u8§hour: u8§minute: u8§second: u8§nanosecond: Option<u32>

The subsecond data in nanoseconds. If the Exif attribute has more sigfinicant digits, they are rounded down.

§offset: Option<i16>

The offset of the time zone in minutes.

Implementations§

Source§

impl DateTime

Source

pub fn from_ascii(data: &[u8]) -> Result<DateTime, Error>

Parse an ASCII data of a DateTime field. The range of a number is not validated, so, for example, 13 may be returned as the month.

If the value is blank, Error::BlankValue is returned.

Examples found in repository?
examples/reading.rs (line 76)
34fn main() {
35    let file = File::open("tests/exif.jpg").unwrap();
36    let exif = Reader::new().read_from_container(
37        &mut BufReader::new(&file)).unwrap();
38
39    // To obtain a string representation, `Value::display_as`
40    // or `Field::display_value` can be used.  To display a value with its
41    // unit, call `with_unit` on the return value of `Field::display_value`.
42    let tag_list = [Tag::ExifVersion,
43                    Tag::PixelXDimension,
44                    Tag::XResolution,
45                    Tag::ImageDescription,
46                    Tag::DateTime];
47    for tag in tag_list {
48        if let Some(field) = exif.get_field(tag, In::PRIMARY) {
49            println!("{}: {}",
50                     field.tag, field.display_value().with_unit(&exif));
51        }
52    }
53
54    // To get unsigned integer value(s) from either of BYTE, SHORT,
55    // or LONG, `Value::get_uint` or `Value::iter_uint` can be used.
56    if let Some(field) = exif.get_field(Tag::PixelXDimension, In::PRIMARY) {
57        if let Some(width) = field.value.get_uint(0) {
58            println!("Valid width of the image is {}.", width);
59        }
60    }
61
62    // To convert a Rational or SRational to an f64, `Rational::to_f64`
63    // or `SRational::to_f64` can be used.
64    if let Some(field) = exif.get_field(Tag::XResolution, In::PRIMARY) {
65        match field.value {
66            Value::Rational(ref vec) if !vec.is_empty() =>
67                println!("X resolution is {}.", vec[0].to_f64()),
68            _ => {},
69        }
70    }
71
72    // To parse a DateTime-like field, `DateTime::from_ascii` can be used.
73    if let Some(field) = exif.get_field(Tag::DateTime, In::PRIMARY) {
74        match field.value {
75            Value::Ascii(ref vec) if !vec.is_empty() => {
76                if let Ok(datetime) = DateTime::from_ascii(&vec[0]) {
77                    println!("Year of DateTime is {}.", datetime.year);
78                }
79            },
80            _ => {},
81        }
82    }
83}
Source

pub fn parse_subsec(&mut self, data: &[u8]) -> Result<(), Error>

Parses an SubsecTime-like field.

Source

pub fn parse_offset(&mut self, data: &[u8]) -> Result<(), Error>

Parses an OffsetTime-like field.

Trait Implementations§

Source§

impl Debug for DateTime

Source§

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

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

impl Display for DateTime

Source§

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

Formats the value using the given formatter. Read more

Auto Trait Implementations§

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§

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.