/// <summary> /// Converts a .NET date to a JavaScript JSON date value. /// </summary> /// <param name="date">.Net Date</param> /// <returns></returns> public static string EncodeJsDate(DateTime date, JsonDateEncodingModes dateMode = JsonDateEncodingModes.ISO) { TimeSpan tspan = date.ToUniversalTime().Subtract(DAT_JAVASCRIPT_BASEDATE); double milliseconds = Math.Floor(tspan.TotalMilliseconds); // ISO 8601 mode string "2009-03-28T21:55:21.1234567Z" if (dateMode == JsonDateEncodingModes.ISO) { // this is the same format that browser JSON formatters produce return(string.Concat("\"", date.ToString("yyyy-MM-ddThh:mm:ss.fffZ"), "\"")); } // raw date expression - new Date(1227578400000) if (dateMode == JsonDateEncodingModes.NewDateExpression) { return("new Date(" + milliseconds + ")"); } // MS Ajax style string: "\/Date(1227578400000)\/" if (dateMode == JsonDateEncodingModes.MsAjax) { StringBuilder sb = new StringBuilder(40); sb.Append(@"""\/Date("); sb.Append(milliseconds); // Add Timezone sb.Append((TimeZoneInfo.Local.GetUtcOffset(date).Hours * 100).ToString("0000").PadLeft(4, '0')); sb.Append(@")\/"""); return(sb.ToString()); } throw new ArgumentException("Date Format not supported."); }
/// <summary> /// Converts a .NET date to a JavaScript JSON date value. /// </summary> /// <param name="date">.Net Date</param> /// <returns></returns> public static string EncodeJsDate(DateTime date, JsonDateEncodingModes dateMode = JsonDateEncodingModes.ISO) { TimeSpan tspan = date.ToUniversalTime().Subtract(DAT_JAVASCRIPT_BASEDATE); double milliseconds = Math.Floor(tspan.TotalMilliseconds); // ISO 8601 mode string "2009-03-28T21:55:21.1234567Z" if (dateMode == JsonDateEncodingModes.ISO) // this is the same format that browser JSON formatters produce return string.Concat("\"", date.ToString("yyyy-MM-ddThh:mm:ss.fffZ"), "\""); // raw date expression - new Date(1227578400000) if (dateMode == JsonDateEncodingModes.NewDateExpression) return "new Date(" + milliseconds.ToString() + ")"; // MS Ajax style string: "\/Date(1227578400000)\/" if (dateMode == JsonDateEncodingModes.MsAjax) { StringBuilder sb = new StringBuilder(40); sb.Append(@"""\/Date("); sb.Append(milliseconds); // Add Timezone sb.Append((TimeZone.CurrentTimeZone.GetUtcOffset(date).Hours * 100).ToString("0000").PadLeft(4, '0')); sb.Append(@")\/"""); return sb.ToString(); } throw new ArgumentException("Date Format not supported."); }
/// <summary> /// Converts a .NET date to a JavaScript JSON date value. Several /// different formats are supported (new Date(), MsAjax style strings /// and ISO date strings). /// </summary> /// <param name="date">.Net Date</param> /// <returns></returns> public static string EncodeJsDate(DateTime date, JsonDateEncodingModes dateMode) { TimeSpan tspan = date.ToUniversalTime().Subtract(DAT_JAVASCRIPT_BASEDATE); double milliseconds = Math.Floor(tspan.TotalMilliseconds); // raw date expression - new Date(1227578400000) if (dateMode == JsonDateEncodingModes.NewDateExpression) return "new Date(" + milliseconds.ToString() + ")"; // MS Ajax style string: "\/Date(1227578400000)\/" if (dateMode == JsonDateEncodingModes.MsAjax) { StringBuilder sb = new StringBuilder(40); sb.Append(@"""\/Date("); sb.Append(milliseconds); // Add Timezone sb.Append((TimeZone.CurrentTimeZone.GetUtcOffset(date).Hours * 100).ToString("0000").PadLeft(4, '0')); sb.Append(@")\/"""); return sb.ToString(); } // ISO 8601 mode string "2009-03-28T21:55:21Z" if (dateMode == JsonDateEncodingModes.ISO) return "\"" + DateTime.UtcNow.ToString("s") + "Z" + "\""; throw new ArgumentException("Date Format not supported."); }