public static string ToString(DateTime value) { return(string.Format(CultureInfo.InvariantCulture, "/Date({0})/", DateTimeExtensions.ToUnixTimeMilliseconds(value))); }
DateTimeOffset ICustomTypeSerializer <DateTimeOffset> .Read(JsonReader reader, char firstChar, out char?overChar, IStaticSerializerProvider staticSerializerProvider) { var offset = reader.ReadLong(firstChar, out overChar); return(DateTimeExtensions.FromUnixTimeSeconds(offset, TimeSpan.Zero)); }
private static bool TryParse(string value, out DateTimeOffset result) { //avoid nullRefenceException value = (value ?? string.Empty).Trim(); if (!value.StartsWith(_prefix, StringComparison.OrdinalIgnoreCase)) { result = default(DateTimeOffset); return(false); } long time; // LastIndexOf is faster than index of when searching for a char that is more likely to be at the end of string. var offsetIndex = value.LastIndexOf('+', value.Length - 1); if (offsetIndex != -1) { // Read positive offset value int hours, minutes; if (TryParse(value, out time, offsetIndex, out hours, out minutes)) { result = DateTimeExtensions.FromUnixTimeMilliseconds(time, new TimeSpan(hours: hours, minutes: minutes, seconds: 0)); return(true); } else { result = default(DateTimeOffset); return(false); } } // LastIndexOf is faster than index of when searching for a char that is more likely to be at the end of string. offsetIndex = value.LastIndexOf('-', value.Length - 1); if (offsetIndex != -1) { // Read negative offset value int hours, minutes; if (TryParse(value, out time, offsetIndex, out hours, out minutes)) { result = DateTimeExtensions.FromUnixTimeMilliseconds(time, new TimeSpan(hours: -hours, minutes: -minutes, seconds: 0)); return(true); } else { result = default(DateTimeOffset); return(false); } } // No offset if (TryParse(value, out time)) { result = DateTimeExtensions.FromUnixTimeMilliseconds(time, TimeSpan.Zero); return(true); } else { result = default(DateTimeOffset); return(false); } }