/// <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.");
        }
Example #2
0
        /// <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.");
        }
Example #3
0
        /// <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.");
        }