1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
// Take a look at the license at the top of the repository in the LICENSE file.
use crate::translate::*;
use crate::{TimeType, TimeZone};
impl TimeZone {
/// Finds an interval within `self` that corresponds to the given `time_`,
/// possibly adjusting `time_` if required to fit into an interval.
/// The meaning of `time_` depends on `type_`.
///
/// This function is similar to [`find_interval()`][Self::find_interval()], with the
/// difference that it always succeeds (by making the adjustments
/// described below).
///
/// In any of the cases where [`find_interval()`][Self::find_interval()] succeeds then
/// this function returns the same value, without modifying `time_`.
///
/// This function may, however, modify `time_` in order to deal with
/// non-existent times. If the non-existent local `time_` of 02:30 were
/// requested on March 14th 2010 in Toronto then this function would
/// adjust `time_` to be 03:00 and return the interval containing the
/// adjusted time.
/// ## `type_`
/// the [`TimeType`][crate::TimeType] of `time_`
/// ## `time_`
/// a pointer to a number of seconds since January 1, 1970
///
/// # Returns
///
/// the interval containing `time_`, never -1
#[doc(alias = "g_time_zone_adjust_time")]
pub fn adjust_time(&self, type_: TimeType, mut time: i64) -> (i32, i64) {
unsafe {
let res =
ffi::g_time_zone_adjust_time(self.to_glib_none().0, type_.into_glib(), &mut time);
(res, time)
}
}
}