Heim > Backend-Entwicklung > C++ > Wie kann ich in meiner Anwendung benutzerfreundlich ein Build-Datum anstelle einer Build-Nummer anzeigen?

Wie kann ich in meiner Anwendung benutzerfreundlich ein Build-Datum anstelle einer Build-Nummer anzeigen?

Susan Sarandon
Freigeben: 2025-01-22 01:11:12
Original
762 Leute haben es durchsucht

How Can I Display a User-Friendly Build Date Instead of a Build Number in My Application?

Erstellungsdatum benutzerfreundlich anzeigen

Bei der Anzeige der Build-Details Ihrer Anwendung ist es wichtig, diese in einem Format darzustellen, das für Benutzer leicht verständlich ist. Den meisten Benutzern ist die Build-Nummer weniger wichtig als vielmehr die Frage, ob sie über die neueste Version verfügen.

Build-Nummer und -Datum abfragen

Während es möglich ist, die Build-Nummer direkt mit Assembly.GetExecutingAssembly().GetName().Version.ToString() abzurufen, erfordert das Abrufen des Build-Datums einen anderen Ansatz.

Linker-Zeitstempel abrufen

Der zuverlässigste Weg, das Erstellungsdatum zu bestimmen, besteht darin, den Linker-Zeitstempel im PE-Header der ausführbaren Datei abzurufen. Dieser Zeitstempel gibt den Zeitpunkt an, zu dem die ausführbare Datei erstellt wurde.

C#-Code zum Extrahieren des Linker-Zeitstempels

Joe Spivey hat einen C#-Codeausschnitt zum Extrahieren des Linker-Zeitstempels bereitgestellt:

<code class="language-csharp">public static DateTime GetLinkerTime(this Assembly assembly, TimeZoneInfo target = null)
{
    var filePath = assembly.Location;
    const int c_PeHeaderOffset = 60;
    const int c_LinkerTimestampOffset = 8;

    var buffer = new byte[2048];

    using (var stream = new FileStream(filePath, FileMode.Open, FileAccess.Read))
        stream.Read(buffer, 0, 2048);

    var offset = BitConverter.ToInt32(buffer, c_PeHeaderOffset);
    var secondsSince1970 = BitConverter.ToInt32(buffer, offset + c_LinkerTimestampOffset);
    var epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);

    var linkTimeUtc = epoch.AddSeconds(secondsSince1970);

    var tz = target ?? TimeZoneInfo.Local;
    var localTime = TimeZoneInfo.ConvertTimeFromUtc(linkTimeUtc, tz);

    return localTime;
}</code>
Nach dem Login kopieren

Nutzungsbeispiele

Um das Erstellungsdatum in Ortszeit abzurufen, verwenden Sie den folgenden Code:

<code class="language-csharp">var linkTimeLocal = Assembly.GetExecutingAssembly().GetLinkerTime();</code>
Nach dem Login kopieren

Anleitung zu .NET Core

Während diese Methode in .NET Core 1.0 funktioniert, ist sie nach .NET Core 1.1 veraltet und führt möglicherweise zu falschen Ergebnissen.

Das obige ist der detaillierte Inhalt vonWie kann ich in meiner Anwendung benutzerfreundlich ein Build-Datum anstelle einer Build-Nummer anzeigen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage