Freigeben über


Konfigurieren des Verhaltens und Formats der Datums- und Uhrzeitspalte mithilfe von Code

Wenn Sie Benutzer und Büros auf der ganzen Welt haben, ist es wichtig, Datums- und Uhrzeitwerte in mehreren Zeitzonen ordnungsgemäß darzustellen. Verwenden Sie den DateTimeAttributeMetadata oder die DateTimeAttributeMetadata-Klasse, um Spalten vom Typ DateTime in Microsoft Dataverse zu definieren und zu verwalten. Verwenden Sie die DateTimeBehavior Eigenschaft (für DAS SDK für .NET, siehe DateTimeBehavior-Eigenschaft), um zu definieren, ob Datums- und Uhrzeitwerte mit oder ohne Zeitzoneninformationen gespeichert werden sollen. Verwenden Sie die DateTimeAttributeMetadata.Format-Eigenschaft , um das Anzeigeformat dieser Spalten anzugeben.

Sie können auch den Anpassungsbereich in Dataverse verwenden, um das Verhalten und das Format der Datums- und Zeitspalten zu definieren. Weitere Informationen finden Sie unter Verhalten und Format der Spalte "Datum und Uhrzeit".

Anmerkung

Alle Datums- und Zeitspalten in Dataverse unterstützen Werte ab dem 1.1.1753 12:00 Uhr.

Wenn sich Ihr "Nur-Datum"- oder "Datums- und Uhrzeitfeld" in einer Solution befindet, können Sie das Verhalten eines vorhandenen verwalteten Felds nur ändern, wenn Sie der Publisher sind. Um eine Änderung an diesen Feldern vorzunehmen, müssen Sie die Lösung aktualisieren, die die Spalte "Nur Datum" oder "Datum" hinzugefügt hat. Weitere Informationen finden Sie unter Upgrade oder Aktualisieren einer Lösung.

Das Verhalten einer Datums- und Zeitspalte festlegen

Verwenden Sie den DateTimeBehavior oder die DateTimeBehavior-Klasse, um einen Wert für den DateTimeAttributeMetadata-Entitätstyp anzugeben. DateTimeBehavior-Eigenschaft Dies DateTimeBehavior enthält die folgenden Elemente. Jedes Element gibt eine Zeichenfolge mit demselben Wert wie der Elementname zurück:

Mitgliedsname und Wert Beschreibung
UserLocal - Speichert den Datums- und Zeitwert als UTC-Wert im System.
- Der Vorgang „Abrufen“ gibt den UTC-Wert zurück.
- Der Aktualisierungsvorgang konvertiert den UTC-Wert in den Zeitzonenwert des aktuellen Benutzers und speichert dann den aktualisierten Wert im Istzustand oder als Entsprechung des UTC-Werts. Dies ist von dem Wertetyp abhängig (DateTimeKind), der für den Aktualisierungsvorgang angegeben ist. Wenn der angegebene Wert dem UTC-Typ angehört, wird er im Istzustand gespeichert. Andernfalls wird der entsprechende UTC-Wert gespeichert.
- Durch das Abrufen des formatierten Werts erfolgt eine Konvertierung von UTC in die aktuelle Zeitzone des Benutzers auf Grundlage der Zeitzonen- und Gebietsschemaeinstellung des Benutzers.
- Für das Web-API wird die Spalte als DateTimeOffset dargestellt.
- Dieses Verhalten wird für Systemspalten wie CreatedOn und ModifiedOn verwendet und kann nicht geändert werden. Verwenden Sie dieses Verhalten für benutzerdefinierte Spalten, in denen Datums- und Uhrzeitwerte mit den Zeitzoneninformationen gespeichert werden sollen.
DateOnly - Speichert den tatsächlichen Datumswert ohne Zeitwert.
- Beim Abrufen des formatierten Werts wird der Datumswert angezeigt.
- Für die Web-API wird die Spalte als Datum dargestellt.
– Verwenden Sie dieses Verhalten für benutzerdefinierte Spalten, die Geburtstage und Jahrestage speichern, bei denen die Uhrzeitinformationen nicht erforderlich sind.
TimeZoneIndependent - Speichert die aktuellen Datums- und Zeitwerte im System, unabhängig von der Zeitzone des Benutzers.
- Bei den Vorgängen zum Abrufen und Aktualisieren wird keine Zeitzonenkonvertierung durchgeführt, und die tatsächlichen Datums- und Zeitwerte werden unabhängig von der Zeitzone des Benutzers im System zurückgegeben bzw. aktualisiert.
- Beim Abrufen des formatierten Werts wird der Datums- und Uhrzeitwert (ohne Zeitzonenkonvertierung) gemäß dem Format angezeigt, das von der Zeitzonen- und Gebietsschemaeinstellung des aktuellen Benutzers angegeben wird.
- Für das Web-API wird die Spalte als DateTimeOffset dargestellt.
– Verwenden Sie dieses Verhalten für Spalten, die Informationen speichern, beispielsweise Check-in und Check-out für Hotels.

Das folgende Codebeispiel zeigt, wie Sie das Verhalten UserLocal für eine neue Datum-Zeit-Spalte festlegen:

/// <summary>
/// Create a new DateTime column for the Account table with UserLocal behavior
/// </summary>
/// <param name="service">Authenticated IOrganizationService instance</param>
static void CreateUserLocalDateTimeColumn(IOrganizationService service) {

   int _languageCode = 1033; //English

   DateTimeAttributeMetadata dtAttribute = new()
   {
       SchemaName = "new_SampleDateTimeAttribute",
       DisplayName = new Label("Sample Date Time Attribute", _languageCode),
       RequiredLevel = new AttributeRequiredLevelManagedProperty(AttributeRequiredLevel.None),
       Description = new Label("Created by SDK Sample", _languageCode),
       DateTimeBehavior = DateTimeBehavior.UserLocal,
       Format = Microsoft.Xrm.Sdk.Metadata.DateTimeFormat.DateAndTime,
       ImeMode = ImeMode.Disabled
   };

   CreateAttributeRequest request = new()
   {
       EntityName = Account.EntityLogicalName,
       Attribute = dtAttribute
   };

   service.Execute(request);
}

Im Beispielcode können Sie den Wert für die Eigenschaft DateTimeBehavior festlegen, indem Sie den direkten Zeichenfolgenwert angeben: DateTimeBehavior = "UserLocal"

Wenn Sie das Verhalten beim Erstellen einer Datums- und Zeitspalte nicht angeben, wird die Spalte standardmäßig mit dem Verhalten UserLocal erstellt.

Wichtig

  • Nachdem Sie eine Datums- und Uhrzeitspalte mit dem Verhalten, das auf DateOnly oder TimeZoneIndependent festgelegt ist, erstellt haben, können Sie das Verhalten der Spalte nicht mehr ändern. Weitere Informationen finden Sie unter Ändern des Verhaltens einer DateTime-Spalte.
  • Die Datums- und Uhrzeitspalten mit einem Verhalten ähnlich wie DateOnly oder TimeZoneIndependent werden wie UserLocal behandelt, wenn sie in einer früheren Version des Dynamics 365 für Outlook-Clients im Offlinemodus bearbeitet werden. Diese Einschränkung ist vorhanden, da der Client die neuen Verhaltensweisen nicht versteht und sie nicht anders behandelt als UserLocal. Beim Upgrade werden keine Datums- und Uhrzeitspalten in das neue Verhalten konvertiert. Um diese Einschränkung zu vermeiden, aktualisieren Sie alle Dataverse-Clients auf die neueste Version, bevor ein Customizer eines der neuen Verhaltensweisen einnimmt. Wenn Sie online sind, funktioniert das Bearbeiten von Daten für Spalten mit den neuen Verhaltensweisen einwandfrei.

Festlegen des Formats der Spalte für Datum und Uhrzeit

Verwenden Sie die Format Eigenschaft, um das Datums-/Uhrzeitanzeigeformat der Spalte anzugeben, unabhängig davon, wie das System sie speichert. Verwenden Sie die DateTimeFormat Aufzählung (DateTimeFormat-Enumerationstyp oder DateTimeFormat-Enumeration), um das Anzeigeformat anzugeben: DateAndTime oder DateOnly.

Wenn Sie die DateTimeAttributeMetadata.DateTimeBehavior Eigenschaft auf DateOnly festlegen, können Sie den Wert der DateTimeAttributeMetadata.Format Eigenschaft nicht festlegen oder ändern in DateAndTime.

Datums- und Uhrzeitabfrageoperatoren für DateOnly-Verhalten werden nicht unterstützt

Zeitbezogene Abfrageoperatoren werden für das DateOnly-Verhalten nicht unterstützt. Abgesehen von den hier genannten zeitspezifischen Abfrageoperatoren werden alle anderen Abfrageoperatoren unterstützt.

  • Älter als X Minuten
  • Älter als x Stunden
  • Letzte X Stunden
  • Nächste X Stunden

Weitere Informationen: Datenoperatoren für Datum und Uhrzeit

Verwenden von OData-APIs zum Senden von lokalen Datums- und Uhrzeitwerten des Benutzers

Wenn ein Benutzer in Microsoft Power Platform ein Datum und eine Uhrzeit in der benutzerspezifischen Zeitzone über die Benutzeroberfläche eingibt, setzt eine automatische Berechnung die Daten auf das richtige Datum und die richtige Uhrzeit. Es führt eine Analyse durch, um jedes übermittelte Datum basierend auf den Spalten- und Benutzeroberflächeneinstellungen in den entsprechenden UTC-Wert zu ändern. Wenn Sie einen Datums- und Uhrzeitwert mithilfe des Web-API-Vorgangs übermitteln, tritt die Berechnung nicht auf, was dazu führt, dass unerklärte Daten angezeigt werden. Wenn Sie sich beispielsweise in der Pazifischen Zeitzone befinden und 4.04.2021 12:00 Uhr übermitteln, geschieht Folgendes:

  • Original: Der Absender vom 04.04.2021 um 12:00 Uhr befindet sich in der pazifischen Zeitzone.
  • Über die Benutzeroberfläche gesendet und als lokaler Benutzer abgerufen: 4/4/2021 12:00
  • Über die API gesendet und als lokaler Benutzer abgerufen: 4/4/2021 04:00

Über die Benutzeroberfläche senden

Die Benutzeroberfläche legt den Wert auf "Benutzerlokal" fest, und die Spalte wird auf "Benutzerlokal" festgelegt.

  • Ursprünglicher Wert: 4/4/2021 12:00 in der pazifischen Zeitzone.
  • Wert in UTC berechnet und in Dataverse gespeichert: 4/4/2021 12:00 + 8:00 = 4/4/2021T20:00:00Z. Dieser Wert liegt daran, dass PST -8:00 von UTC ist, sodass +8 dem gespeicherten Wert hinzugefügt wird.
  • Wert bei Anzeige in der Benutzeroberfläche von einem Benutzer in der pazifischen Zeitzone: 4/4/2021 12:00. Die Benutzeroberfläche wendet die Berechnung des UTC-Offsets von -8:00 auf 04.04.2021T20:00:00Z an, um den korrekten Wert zu berechnen.

Über die API senden

Die Benutzeroberfläche legt den Wert auf benutzerlokal fest, und die Spalte wird auf benutzerlokal festgelegt.

  • Ursprünglicher Wert: 04/04/2021T12:00:00 oder 04/04/2021T12:00:00Z – keine Abweichung oder UTC-Indikator vorhanden. Der Absender befindet sich in der pazifischen Zeitzone.
  • Wert in UTC berechnet und in Dataverse gespeichert: Bei der Übermittlung von OData-APIs wird keine Benutzeroberflächenberechnung durchgeführt, daher wird der Wert als 4/4/2021T12:00:00Z gespeichert.
  • Wert bei Anzeige in der Benutzeroberfläche von einem Benutzer in der pazifischen Zeitzone: 4/4/2021 4:00. Die Benutzeroberfläche wendet die UTC-Abweichungsberechnung von -8:00 auf den Wert in Dataverse an.

Um dieses Problem zu verhindern, wenn API-Aufrufe für Eingabedaten für lokale Benutzerspalten verwendet werden, berechnen Sie den Offset des Benutzers, der die Daten übermittelt, und wenden Sie den Offset an.

Im vorherigen Beispiel muss 4.04.2021 12:00 Uhr über die API als 4.4.2021T12:00:00-08:00 übermittelt werden. Die ursprüngliche Uhrzeit und das Ursprüngliche Datum umfassen die Offsetberechnung der Zeitzone des aktuellen Benutzers. Alternativ kann der Absender die Berechnung vor dem Einreichen durchführen und 4/4/2021T20:00:00Z einreichen.

Wenn Sie die Offsetberechnung einschließen möchten, schließen Sie den UTC-Indikator nicht ein Z, da Dataverse sie nicht akzeptiert.

Ändern des Verhaltens einer Datums- und Zeitspalte

Sie können eine Datums- und Zeitspalte aktualisieren, um ihr Verhalten zu ändern, wenn Sie die Rolle „System Anpasser“ in Ihrer Dataverse-Instanz haben und die verwaltete Eigenschaft DateTimeAttributeMetadata.CanChangeDateTimeBehavior für die Datums- und Zeitspalte auf True festgelegt ist.

Vorsicht

Überprüfen Sie vor dem Ändern des Verhaltens einer Datums- und Uhrzeitspalte alle Abhängigkeiten der Spalte, z. B. Geschäftsregeln, Workflows und berechnete oder Rollupspalten, um sicherzustellen, dass keine Probleme auftreten, da das Verhalten geändert wird. System Customizer können das Ändern des Verhaltens vorhandener Datums- und Uhrzeitspalten mithilfe der DateTimeAttributeMetadata.CanChangeDateTimeBehavior verwalteten Eigenschaft einschränken.

Öffnen Sie mindestens nach dem Ändern des Verhaltens einer Datums- und Uhrzeitspalte jede Geschäftsregel, jeden Workflow, berechnete Spalten- und Rollupspaltendatensatz, der von der geänderten Datums- und Uhrzeitspalte abhängt, überprüfen Sie die Informationen, und speichern Sie den Datensatz, um sicherzustellen, dass das neueste Spaltenverhalten und -wert verwendet wird.

Öffnen Sie nach der Änderung des Daten- und Zeitverhaltens einer berechneten oder Rollup-Spalte den Editor für die Definition der berechneten oder Rollup-Spalte und speichern Sie die Spaltendefinition, um sicherzustellen, dass die Spalte auch nach der Verhaltensänderung gültig ist. Systemanpasser können den Spaltendefinitions-Editor für berechnete oder Rollupspalten öffnen, indem sie Bearbeiten neben Feldtyp im Anpassungsbereich in Dataverse auswählen. Weitere Informationen finden Sie unter Definieren berechneter Spalten zum Automatisieren von Berechnungen und Definieren von Rollupspalten, die Werte aggregieren.

  • Das Verhalten der Spalten CreatedOn und ModifiedOn für die vordefinierten und benutzerdefinierten Tabellen ist standardmäßig auf UserLocal festgelegt, und die verwaltete Eigenschaft DateTimeAttributeMetadata.CanChangeDateTimeBehavior ist auf False festgelegt, was bedeutet, dass das Verhalten dieser Spalten nicht geändert werden kann. Obwohl Benutzer den Wert der DateTimeAttributeMetadata.CanChangeDateTimeBehavior verwalteten Eigenschaft dieser Spalten für benutzerdefinierte Tabellen ändern können, können sie das Verhalten der Spalten trotzdem nicht ändern.

  • Für neue angepasste Datums- und Zeitspalten wird die verwaltete Eigenschaft DateTimeAttributeMetadata.CanChangeDateTimeBehavior auf True festgelegt. Diese Einstellung bedeutet, dass Sie das Verhalten einer benutzerdefinierten Datums- und Uhrzeitspalte von UserLocal entweder in DateOnly oder TimeZoneIndependent ändern können. Es sind keine anderen Verhaltensübergänge zulässig.

    Für angepasste Datums- und Zeitspalten, die Teil einer Dataverse-Organisation sind, wird die verwaltete Eigenschaft DateTimeAttributeMetadata.CanChangeDateTimeBehavior auf True festgelegt, es sei denn, die Spalte oder die übergeordnete Tabelle ist nicht anpassbar.

    Anmerkung

    Wenn Sie die Eigenschaft DateTimeAttributeMetadata.DateTimeBehavior einer Spalte von UserLocal auf DateOnly aktualisieren, stellen Sie sicher, dass Sie auch die EigenschaftDateTimeAttributeMetadata.Format von DateAndTime auf DateOnly ändern. Andernfalls tritt eine Ausnahme auf.

  • Die folgenden vordefinierten Datums- und Uhrzeitspalten in Dataverse sind standardmäßig auf DateOnly festgelegt, und die verwaltete Eigenschaft ist auf False festgelegt, was bedeutet, dass Sie das Verhalten dieser Spalten nicht ändern können.

    Datums- und Zeitspalte Übergeordnete Tabelle
    anniversary Kontakt
    birthdate Kontakt
    duedate Rechnung
    estimatedclosedate Lead
    actualclosedate Möglichkeit
    estimatedclosedate Möglichkeit
    finaldecisiondate Gelegenheit
    validfromdate Produkt
    validtodate Produkt
    closedon Angebot
    expireson Angebot

    Das Verhalten dieser Spalten ist auf UserLocal und die verwaltete Eigenschaft DateTimeAttributeMetadata.CanChangeDateTimeBehavior auf True festgelegt, und Sie können das Verhalten dieser Spalten nur auf DateOnly ändern. Keine anderen Verhaltensübergänge sind erlaubt.

Nachdem Sie das Verhalten von einer Spalte aktualisiert haben, müssen Sie die Anpassungen veröffentlichen, damit die Änderung wirksam wird. Durch das Aktualisieren des Verhaltens einer Datums- und Uhrzeitspalte wird sichergestellt, dass alle eingegebenen oder aktualisierten Werte , nachdem das Spaltenverhalten geändert wurde, gemäß dem neuen Verhalten im System gespeichert werden. Diese Änderung wirkt sich nicht auf die Werte aus, die bereits in der Datenbank gespeichert sind, und sie werden weiterhin als UTC-Werte gespeichert. Wenn Sie jedoch die vorhandenen Werte mithilfe des SDK abrufen oder in der Benutzeroberfläche anzeigen, werden die vorhandenen Werte gemäß dem neuen Verhalten der Spalte angezeigt. Wenn Sie z. B. das Verhalten einer benutzerdefinierten Spalte in einem Konto UserLocalDateOnly ändern und einen vorhandenen Kontodatensatz mithilfe des SDK abrufen, werden Datum und Uhrzeit als <Datum> angezeigt, gefolgt von der Uhrzeit als 12 AM (00:00:00) angezeigt. Ebenso wird bei der Verhaltensänderung von UserLocal zu TimeZoneIndependent der tatsächliche Wert genau so angezeigt, wie er in der Datenbank vorliegt, ohne Zeitzonenumrechnungen.

Der folgende Beispielcode demonstriert, wie Sie das Verhalten einer Datums- und Zeitspalte aktualisieren können:

/// <summary>
/// Update the behavior of a DateTime column
/// </summary>
/// <param name="service">Authenticated IOrganizationService instance</param>
static void UpdateBehaviorOfDateTimeColumn(IOrganizationService service) {

    // Retrieve the attribute to update its behavior and format
    RetrieveAttributeRequest retrieveColumnRequest = new()
    {
        EntityLogicalName = Account.EntityLogicalName,
        LogicalName = "new_sampledatetimeattribute",
        RetrieveAsIfPublished = false
    };
    // Execute the request
    RetrieveAttributeResponse attributeResponse =
                    (RetrieveAttributeResponse)service.Execute(retrieveColumnRequest);

    // Modify the values of the retrieved attribute
    DateTimeAttributeMetadata retrievedAttributeMetadata =
                    (DateTimeAttributeMetadata)attributeResponse.AttributeMetadata;

    retrievedAttributeMetadata.DateTimeBehavior = DateTimeBehavior.DateOnly;
    retrievedAttributeMetadata.Format = Microsoft.Xrm.Sdk.Metadata.DateTimeFormat.DateOnly;

    // Update the attribute with the modified value
    UpdateAttributeRequest updateRequest = new()
    {
        Attribute = retrievedAttributeMetadata,
        EntityName = Account.EntityLogicalName,
        MergeLabels = false
    };
    service.Execute(updateRequest);


    // Publish customizations to the account 
    PublishXmlRequest pxReq = new()
    {
        ParameterXml = "<importexportxml><entities><entity>account</entity></entities></importexportxml>"
    };
    service.Execute(pxReq);
}
 

Anpassung des Verhaltens vorhandener Datums- und Uhrzeitwerte in der Datenbank

Wenn Sie eine Datums- und Uhrzeitspalte aktualisieren, um das Verhalten von UserLocal zu oder DateOnlyzu TimeZoneIndependent ändern, werden die vorhandenen Spaltenwerte in der Datenbank nicht automatisch konvertiert. Die Verhaltensänderung wirkt sich nur auf die Werte aus, die Sie in die Spalte eingeben oder aktualisieren, nachdem Sie das Verhalten geändert haben. Die vorhandenen Datums- und Uhrzeitwerte im System bleiben in UTC. Dataverse zeigt diese Werte entsprechend dem neuen Verhalten an, wenn Sie sie über DAS SDK oder in der Benutzeroberfläche abrufen, wie im vorherigen Abschnitt erläutert. Bei Spalten, deren Verhalten sich von UserLocal zu DateOnly ändert, können Sie mithilfe der ConvertDateAndTimeBehavior-Meldung die vorhandenen UTC-Werte in der Datenbank in den entsprechenden DateOnly-Wert konvertieren, um Datenanomalien zu vermeiden.

Mit dieser Meldung können Sie eine Konvertierungsregel angeben (wenn Sie mit SDK für .NET arbeiten, siehe ConvertDateAndTimeBehaviorRequest.ConversionRule-Eigenschaft), um die Zeitzone auszuwählen, die für die Konvertierung der Werte von UTC in DateOnly verwendet werden soll. Sie können einen der folgenden Konvertierungsregeln angeben:

  • SpecificTimeZone: Konvertiert einen UTC-Wert gemäß dem angegebenen Dataverse-Zeitzonencode in einen DateOnly-Wert. In diesem Fall müssen Sie auch einen Wert für die ConvertDateAndTimeBehaviorRequest.TimeZoneCode-Eigenschaft angeben.
  • CreatedByTimeZone: Wandelt UTC-Wert in einen DateOnly-Wert um, den der Benutzer, der den Datensatz erstellt hat, in der Benutzeroberfläche sieht.
  • OwnerTimeZone: Wandelt UTC-Wert in einen DateOnly-Wert um, den der Eigentümer des Datensatzes in der Benutzeroberfläche sieht.
  • LastUpdatedByTimeZone: Wandelt UTC-Wert in einen DateOnly-Wert um, den der Benutzer, der den Datensatz zuletzt aktualisiert hat, in der Benutzeroberfläche sieht.

Verwenden Sie eines der vier Member der DateTimeBehaviorConversionRule-Klasse , um einen gültigen Wert für die ConversionRule-Eigenschaft anzugeben.

Anmerkung

Sie müssen in Ihrer Dataverse-Instanz über die Systemadministratorrolle verfügen, um die ConvertDateAndTimeBehaviorRequest-Klasse auszuführen.

Wenn Sie das ConvertDateAndTimeBehavior (wenn Sie mit SDK für .NET arbeiten, siehe ConvertDateAndTimeBehaviorRequest Meldung) ausführen, erstellen Sie einen Systemauftrag (asynchroner Vorgang), um die Konvertierungsanforderung auszuführen. In ConvertDateAndTimeBehaviorResponse.JobId der Spalte in der Nachrichtenantwort wird die ID des Systemauftrags angezeigt, den die Konvertierungsanforderung erstellt. Nachdem der Systemauftrag abgeschlossen wurde, sollten Sie die Auftragsdetails (AsyncOperation.Message) überprüfen, um die Konvertierungsdetails oder etwaige Fehler anzuzeigen.

Anmerkung

Gruppieren Sie die Konvertierung mehrerer Spalten in einen einzelnen Konvertierungsauftrag, und führen Sie jeweils einen einzelnen Konvertierungsauftrag aus, um sicherzustellen, dass es keine Konflikte in der Konvertierung und für eine optimale Systemleistung gibt.

Berücksichtigen Sie bei der Verwendung der ConvertDateAndTimeBehavior Nachricht die folgenden Punkte:

  • Vermeiden Sie wichtige Änderungen an den Lösungen in Dataverse während der Ausführung der Nachricht, z. B. das Importieren einer Lösung oder das Löschen einer Spalte oder übergeordneten Tabelle. Unerwartetes Verhalten kann auftreten. Es tritt jedoch kein Datenverlust auf.
  • Die Updates, die im System als Ergebnis der Ausführung der Nachricht vorgenommen wurden, führen keine Workflows und Plug-Ins aus.
  • Durch das Ausführen der Nachricht werden die im System vorgenommenen Updates den Wert "Zuletzt geändert am" für die Spalten nicht ändern. Die Updates werden jedoch überwacht, damit die Administratoren den Zeitpunkt der Konvertierung und die ursprünglichen und geänderten Werte für eine Spalte ermitteln können.

Im folgenden Beispielcode wird gezeigt, wie die Meldung verwendet wird:

/// <summary>
/// Demonstrates use of the ConvertDateAndTimeBehavior message
/// </summary>
/// <param name="service">Authenticated IOrganizationService instance</param>
static void ConvertDateAndTimeBehavior(IOrganizationService service)
{

    ConvertDateAndTimeBehaviorRequest request = new()
    {
        Attributes = new EntityAttributeCollection()
        {
            new KeyValuePair<string, StringCollection>("account", new StringCollection()
            { "new_sampledatetimeattribute" })
        },
        ConversionRule = DateTimeBehaviorConversionRule.SpecificTimeZone.Value,
        TimeZoneCode = 190, // Time zone code for India Standard Time (IST) in Dataverse
        AutoConvert = false // Conversion must be done using ConversionRule
    };

    // Execute the request
    var response = (ConvertDateAndTimeBehaviorResponse)service.Execute(request);

    Console.WriteLine($"Asynchronous Job ID: {response.JobId}");
}

Der Web-Client handhabt die Zeitzonenkonvertierung anders als Einheitliche Oberfläche

Webclient wurde in 2019 eingestellt. Wenn Sie Client-Skripte auf den Nachfolger, Unified Interface, migrieren, beachten Sie den Unterschied in der Art, wie die beiden Clients die Zeitzonenkonvertierung für Benutzerortszeitspalten handhaben.

Im Webclient verarbeitet der Server die Zeitzonenkonvertierung. Wenn ein Benutzer 2018-10-15 07:30 in ein Webclientformular eingibt, gibt die Client-API Xrm.Page.getAttribute(<column name>).getValue()2018-10-15 07:30 zurück. Dieser Wert wird an den Server gesendet und dort werden beim Speichern des Werts Zeitzonenanpassungen vorgenommen.

In Unified Client verarbeitet der Client die Zeitzonenkonvertierung. Wenn ein Benutzer in der Zeitzone UTC+8 2018-10-15 07:30 in ein Unified Client-Formular eingibt, gibt die Client-API formContext.getAttribute(<column name>).getValue() den angepassten Wert 2018-10-14T23:30:00Z zurück. Der Server akzeptiert den Wert wie ist und führt keine weiteren Zeitzonenanpassungen durch.

Um diesen Unterschied zu berücksichtigen, können Sie Folgendes durchführen:

Siehe auch

Funktionsweise und Format der Datums- und Uhrzeitspalte
Probleme mit Datum und Uhrzeit in modellgesteuerten Apps beheben
Spalten-Übersicht
ConvertDateAndTimeBehaviorRequest-Klasse
DateTimeAttributeMetadata-Klasse
Blog: Spielt es eine Rolle, wie Sie Datums- und Uhrzeitdaten übermitteln?