Erstelldatum in Seiten manipulieren

Problemstellung

Erstmal: Warum sollte man das machen wollen? Nunja: Im Basisprojekt sind gewisse Seiten schon vorab erstellt worden. Wird das Basisprojekt kopiert, wird auch das Erstellungsdatum der Seiten (egal ob nun vollkommen leer als Vorlage, oder gefüllt als Legende etc.) mit kopiert. Damit ergibt sich zwangsweise ein älteres Datum in den Seiten als im Projekt selbst. Das sieht etwas uncool aus, oder bringt nur sehr viele Fragen mit sich (besonders in gewissen Kundenkreisen). Und dann ist das nicht einfach nur eine Zeichenfolge, sondern ein Zahlenwert..

Problemlösung

Das Schreiben von Seiteneigenschaften mit XEsSetPagePropertyAction hatte ich ja schon beschrieben, nun muss nur noch geklärt werden, was geschrieben werden soll. Der Zahlenwert sind die Sekunden, die seit dem 1.1.1970 vergangen sind, in Unix die Sekunde 0. Es lässt sich auch einfach selbst heraus finden: Nach dem Anpassen eines Formulars einfach mal in das passende Feld für den Timestamp der letzten Änderung schauen!

Die Berechnung ist auch relativ simple: DateTime von jetzt, DateTime von Sekunde 0, Differenz berechnen, Sekunden auslesen und Nachkommastellen abschneiden. Damit wären alle Bausteine klar, also zum Code:

public void setTimeStampnow(string page) {
  // Seite(n) selektieren
  SelectPage(page);
  
  // Sekunden berechnen
  var now  = DateTime.Now();
  var sec0 = new DateTime(1970, 1, 1, 0, 0, 0);
  int time = (int)now.Subtract(sec0).TotalSeconds;
  
  // Timestamp manipulieren
  ActionCallingContext actionCallingContext = new ActionCallingContext();
  actionCallingContext.AddParameter("PropertyIdentName", "11021");
  actionCallingContext.AddParameter("PropertyIndex",     "0");
  actionCallingContext.AddParameter("PropertyValue",     time.ToString());
  try {
    new CommandLineInterpreter().Execute("XEsSetPagePropertyAction", actionCallingContext);
  } catch (Exception e) {
    //Fehlerbehandlung
  }
}

Ein Gedanke zu „Erstelldatum in Seiten manipulieren“

Schreibe einen Kommentar

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