Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Memaparkan Tarikh Binaan Mesra Pengguna Daripada Nombor Binaan dalam Aplikasi Saya?

Bagaimanakah Saya Boleh Memaparkan Tarikh Binaan Mesra Pengguna Daripada Nombor Binaan dalam Aplikasi Saya?

Susan Sarandon
Lepaskan: 2025-01-22 01:11:12
asal
762 orang telah melayarinya

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

Paparkan tarikh binaan dengan cara yang mesra pengguna

Apabila memaparkan butiran binaan aplikasi anda, adalah penting untuk membentangkannya dalam format yang mudah difahami oleh pengguna. Kebanyakan pengguna kurang mengambil berat tentang nombor binaan dan lebih banyak tentang mengetahui sama ada mereka mempunyai versi terkini.

Nombor binaan pertanyaan dan tarikh

Walaupun boleh mendapatkan nombor binaan terus menggunakan Assembly.GetExecutingAssembly().GetName().Version.ToString(), mendapatkan tarikh binaan memerlukan pendekatan yang berbeza.

Dapatkan cap masa pemaut

Cara paling boleh dipercayai untuk menentukan tarikh binaan ialah mendapatkan cap masa pemaut dalam pengepala PE boleh laku. Cap masa ini mewakili masa boleh laku dibina.

Kod C# untuk mengekstrak cap masa pemaut

Joe Spivey menyediakan coretan kod C# untuk mengekstrak cap masa pemaut:

<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>
Salin selepas log masuk

Contoh penggunaan

Untuk mendapatkan semula tarikh binaan dalam waktu tempatan, gunakan kod berikut:

<code class="language-csharp">var linkTimeLocal = Assembly.GetExecutingAssembly().GetLinkerTime();</code>
Salin selepas log masuk

Arahan tentang .NET Core

Walaupun kaedah ini berfungsi dalam .NET Core 1.0, kaedah ini ditamatkan selepas .NET Core 1.1 dan mungkin menghasilkan keputusan yang salah.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memaparkan Tarikh Binaan Mesra Pengguna Daripada Nombor Binaan dalam Aplikasi Saya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan