Kendo-Grid-DateTime-Spalte Zeigt Falsches Datum

Ich habe einen Kendo-Raster, die eine datetime-Spalten, beim abholen das Datum aus der Datenbank, wir sind immer richtige Datum aber während der Anzeige Datum wird geändert. Für die ex:
DB-Datum ist 07/06/2017 aber beim anzeigen auf der website, es wird geändert in 06/06/2017, wenn man bedenkt MM/DD/YYYY. Könnte jemand bitte helfen Sie mir, dieses. Unsere DB und Website, beide mit Sitz in new york region.

  • Sagst du Monat und Tag vertauscht werden, oder es ändert sich 7/6/17 zu 6/6/17?
  • Nein, Während anzeigen auf website-Datum bekommen verringern, indem man. Wenn Datum ist der 6. April dann während der Anzeige auf der website, es ist der 5. April
  • Was ist die Zeit? Hat die Zeit angezeigt wird, genau wie die Zeit, die vom server empfangen? Wenn Sie nicht die Zeit angezeigt wird, zeigen Sie Sie als gut, da es könnte Ihnen helfen zu verstehen, was der Grund für den Unterschied ist.
  • Wir brauchen nur Datum .. für, dass wir mit Kendo.ToString(dateVar, /“mm/dd/yyyy’/); so etwas wie, dass
InformationsquelleAutor mayank gupta | 2017-06-08



One Reply
  1. 3

    Den Kendo-UI DataSource verwendet die JavaScript-Date-Objekte für Termine. Diese Objekte werden immer in der Zeitzone des Clients), die möglicherweise zu Veränderungen führen, in dem Datum. Eine mögliche option ist die Verwendung von UTC-Termine:

    http://docs.telerik.com/aspnet-mvc/helpers/grid/how-to/editing/utc-time-on-both-server-and-client


    Bearbeiten, kopieren Sie einfach den Inhalt des Links hier, weil SO nicht wie der link die einzige Antwort, die

    Verwenden Sie ein ViewModel mit einer setter-und einer getter, die explizit den DateTime Art zu UTC.

    private DateTime birthDate;
    public DateTime BirthDate
    {
        get { return this.birthDate; }
        set {
            this.birthDate = new DateTime(value.Ticks, DateTimeKind.Utc);
        }
    }
    

    Verwenden Sie die requestEnd Veranstaltung der DataSource abfangen und ersetzen Sie die eingehende Date-Feld mit der Zeitverschiebung.

    @(Html.Kendo().Grid<KendoUIMVC5.Models.Person>().Name("persons")
        .DataSource(dataSource => dataSource
            .Ajax()
            .Events(ev=>ev.RequestEnd("onRequestEnd"))
        )
        //...
    )
    
    <script>
        var onRequestEnd = function(e) {
            if (e.response.Data && e.response.Data.length) {
                var data = e.response.Data;
                if (this.group().length && e.type == "read") {
                    handleGroups(data);
                } else {
                    loopRecords(data);
                }
            }
        }
    
        function handleGroups(groups) {
            for (var i = 0; i < groups.length; i++) {
                var gr = groups[i];
                offsetDateFields(gr); //handle the Key variable as well
                if (gr.HasSubgroups) {
                    handleGroups(gr.Items)
                } else {
                    loopRecords(gr.Items);
                }
            }
        }
    
        function loopRecords(persons) {
            for (var i = 0; i < persons.length; i++) {
                var person = persons[i];
                offsetDateFields(person);
            }
        }
    
        function offsetDateFields(obj) {
            for (var name in obj) {
                var prop = obj[name];
                if (typeof (prop) === "string" && prop.indexOf("/Date(") == 0) {
                    obj[name] = prop.replace(/\d+/, function (n) {
                        var offsetMiliseconds = new Date(parseInt(n)).getTimezoneOffset() * 60000;
                        return parseInt(n) + offsetMiliseconds
                    });
                }
            }
        }
    </script>
    
    • Vielen Dank für Ihre Antwort, ich werde es umsetzen und dich wissen lassen ob es funktioniert oder nicht.
    • Die Lösung, die Sie angegeben haben funktioniert sehr gut. Nochmals vielen Dank.
    • Gut, ich bin froh. Bitte beachten markieren der Antwort als Antwort.
    • Sorry, aber wir sind immer ein Problem, dass diese.Gruppen() ist keine Funktion. Dies ist, wenn wir haben Gitter, die haben keinen datetime-Spalte angezeigt werden.
    • Dieses Problem scheint nichts mit der ursprünglichen Diskussion. Das Raster und die Datenquelle nicht über eine Gruppen () – Methode. Was versuchen Sie zu tun? Es wird am besten sein, buchen Sie eine separate Frage.
    • genau, aber ich Frage, weil in Ihrem link, wir verwenden diese.groupd()

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.