Maison > développement back-end > C++ > Comment puis-je afficher une date de build conviviale au lieu d'un numéro de build dans mon application ?

Comment puis-je afficher une date de build conviviale au lieu d'un numéro de build dans mon application ?

Susan Sarandon
Libérer: 2025-01-22 01:11:12
original
760 Les gens l'ont consulté

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

Afficher la date de construction de manière conviviale

Lors de l'affichage des détails de build de votre application, il est crucial de la présenter dans un format facile à comprendre pour les utilisateurs. La plupart des utilisateurs se soucient moins du numéro de build que de savoir s’ils disposent de la dernière version.

Requête du numéro et de la date du build

Bien qu'il soit possible d'obtenir le numéro de build directement en utilisant Assembly.GetExecutingAssembly().GetName().Version.ToString(), obtenir la date de build nécessite une approche différente.

Récupérer l'horodatage de l'éditeur de liens

Le moyen le plus fiable de déterminer la date de build est de récupérer l'horodatage de l'éditeur de liens dans l'en-tête PE de l'exécutable. Cet horodatage représente l'heure à laquelle l'exécutable a été créé.

Code C# pour extraire l'horodatage de l'éditeur de liens

Joe Spivey a fourni un extrait de code C# pour extraire l'horodatage de l'éditeur de liens :

<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>
Copier après la connexion

Exemples d'utilisation

Pour récupérer la date de build en heure locale, utilisez le code suivant :

<code class="language-csharp">var linkTimeLocal = Assembly.GetExecutingAssembly().GetLinkerTime();</code>
Copier après la connexion

Instructions sur .NET Core

Bien que cette méthode fonctionne dans .NET Core 1.0, elle est obsolète après .NET Core 1.1 et peut produire des résultats incorrects.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal