Сериализация JavaScript DateTime в asp.net не дает объект даты JavaScript?

Используйте третье лицо библиотека dateutil :

from dateutil import parser
dt = parser.parse("Aug 28 1999 12:00AM")

Это может обработать большинство форматов даты, включая тот, который необходимо проанализировать. Это более удобно, чем strptime, поскольку это может предположить правильный формат большую часть времени.

Это очень полезный для записи тестов, где удобочитаемость более важна, чем производительность.

можно установить его с:

pip install python-dateutil

48
задан Your Friend Ken 3 August 2009 в 21:46
поделиться

4 ответа

Кажется, это работает (спасибо, Chris S за идею). В C # выполните замену, чтобы удалить строковую оболочку вокруг объекта даты;

    using System.Collections.Generic;
        using System.Linq;
        using System.Web;
        using System.Web.UI;
        using System.Web.Script.Serialization;
        using System.Web.Script.Services;
        using System.Web.Services;
        using System.Web.UI.WebControls;

        namespace test
        {
            [ScriptService]
            public partial class testing: System.Web.UI.Page
            {
                protected string strCaseID;
                protected string jsonCase;

                protected void Page_Load(object sender, EventArgs e)
                {
                    if (!IsPostBack)
                    {
                        strCaseID =Tools.GetQueryObject("id");
                        // get a complex object with dates, string, arrays etc.
                        jsonESHACase = new JavaScriptSerializer().Serialize(objCase.Get(strCaseID ))
                            .Replace("\"\\/Date(", "new Date(").Replace(")\\/\"", ")");
                    }
                }
            }
        }

.. и после удаления кавычек и добавления нового префикса в Date этот js теперь работает. Ура!

testCase= <%= jsonESHACase %>;
    if (testCase) {
        document.write(testCase["ClosingDate"].format("MM dd yyyy"));
    }
14
ответ дан 26 November 2019 в 18:51
поделиться

Это известное ограничение для JSON. Этот ответ может вам помочь, в частности:

value = new Date(parseInt(value.replace("/Date(", "").replace(")/",""), 10));
56
ответ дан 26 November 2019 в 18:51
поделиться

Поскольку мы не можем просматривать сайт в наших собственных браузерах, вот процесс, который я бы использовал, чтобы попытаться решить проблему:

  • Начать удаление блоков кода по частям, пока оба браузера не будут выглядеть одинаково.

  • Какой блок кода вы удалили последним, чтобы все выровнялось идеально (даже если вам не хватает фрагмента в теле), именно там, где виноват есть.

  • Поскольку вы нашли виновного, поместите весь код обратно. Начните сначала возиться со шрифтами. Изменяйте шрифты, размеры, удаляйте текст и т. Д. , пока не найдете условие, при котором браузеры будут одинаковыми. Если проблема не в шрифте, начните возиться с другими частями, пока не найдете условие, которое ей соответствует.

  • Как только вы это сделаете,

0
ответ дан 26 November 2019 в 18:51
поделиться

Этот пример работает

    JavaScriptSerializer serializer = new JavaScriptSerializer();

    DateTime dt = DateTime.Now;
    DateTime dt1 = dt;

    string jsonDateNow = serializer.Serialize(dt1);
-2
ответ дан 26 November 2019 в 18:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: