Skip to content

Instantly share code, notes, and snippets.

@jamie94bc
Created September 26, 2014 14:50
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jamie94bc/ceac7fa8c0062345a6d5 to your computer and use it in GitHub Desktop.
Save jamie94bc/ceac7fa8c0062345a6d5 to your computer and use it in GitHub Desktop.
A workaround for a bug in Mono for DateTime.Now for people who also use MvvmCross.
public static class DateTimeEx {
private static IDateTimeProvider _provider;
public static DateTime Now {
get {
if (_provider == null && !Mvx.TryResolve(out _provider)) {
return DateTime.Now;
}
return _provider.Now;
}
}
public static DateTime Today {
get { return Now.Date; }
}
public static DateTime ToUniversalTimeEx(this DateTime dt) {
if (dt.Kind == DateTimeKind.Utc) {
return dt;
}
return dt.Add(DateTime.UtcNow - Now);
}
}
public interface IDateTimeProvider {
DateTime Now { get; }
}
public sealed class DroidDateTimeProvider : IDateTimeProvider {
public DateTime Now {
get {
var c = Calendar.Instance;
return new DateTime(
c.Get(CalendarField.Year),
c.Get(CalendarField.Month) + 1,
c.Get(CalendarField.DayOfMonth),
c.Get(CalendarField.HourOfDay),
c.Get(CalendarField.Minute),
c.Get(CalendarField.Second),
c.Get(CalendarField.Millisecond),
DateTimeKind.Local
);
}
}
}
public sealed class iOSDateTimeProvider : IDateTimeProvider {
public DateTime Now {
get { return NSDate.Now; }
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment