Ada contoh kode ini, tetapi kemudian mulai berbicara tentang masalah milidetik / nanodetik.
Pertanyaan yang sama ada di MSDN, Detik sejak zaman Unix di C # .
Inilah yang saya dapatkan sejauh ini:
public Double CreatedEpoch
{
get
{
DateTime epoch = new DateTime(1970, 1, 1, 0, 0, 0, 0).ToLocalTime();
TimeSpan span = (this.Created.ToLocalTime() - epoch);
return span.TotalSeconds;
}
set
{
DateTime epoch = new DateTime(1970, 1, 1, 0, 0, 0, 0).ToLocalTime();
this.Created = epoch.AddSeconds(value);
}
}
DateTimeOffset.FromUnixTimeSeconds
danDateTimeOffset.ToUnixTimeSeconds
metode. Ada metode untuk unix-waktu milidetik juga.Jawaban:
Inilah yang Anda butuhkan:
Atau, untuk Java (yang berbeda karena cap waktu dalam milidetik, bukan detik):
sumber
dtDateTime.AddMilliseconds(javaTimeStamp).ToLocalTime();
static DateTimeOffset.FromUnixMilliseconds
danDateTimeOffset.ToUnixMilliseconds
.Versi terbaru .NET (v4.6) telah menambahkan dukungan bawaan untuk konversi waktu Unix. Itu termasuk ke dan dari waktu Unix yang diwakili oleh detik atau milidetik.
DateTimeOffset
:DateTimeOffset
ke waktu Unix dalam detik:DateTimeOffset
:DateTimeOffset
hingga waktu Unix dalam milidetik:Catatan: Metode ini dikonversi ke dan dari UTC
DateTimeOffset
. Untuk mendapatkanDateTime
representasi cukup gunakanDateTimeOffset.UtcDateTime
atauDateTimeOffset.LocalDateTime
properti:sumber
ToLocalTime
jika Anda mau.long unixMilliseconds = DateTimeOffset.Now.ToUnixTimeMilliseconds();
Stempel DateTime ke UNIX:
sumber
Dari Wikipedia :
Jadi ini kode saya:
sumber
Hati-hati, jika Anda membutuhkan ketelitian yang lebih tinggi dari milidetik!
Metode .NET (v4.6) (mis. FromUnixTimeMilliseconds ) tidak memberikan ketepatan ini.
AddSeconds dan AddMilliseconds juga memotong mikrodetik di ganda.
Versi ini memiliki presisi tinggi:
Unix -> DateTime
DateTime -> Unix
sumber
UnixTimestampToDateTime
, yang disediakanunixTime
masih dalam hitungan detik, bukan?Lihat IdentityModel.EpochTimeExtensions
sumber
DateTime.Ticks
Int64 (panjang), jadi mereka menghindari pemeran tambahan.Untuk melengkapi jawaban ScottCher, saya baru-baru ini menemukan diri saya dalam skenario yang menyebalkan memiliki kedua cap waktu UNIX detik dan milidetik dicampur secara sewenang-wenang dalam satu set data input. Kode berikut tampaknya menangani ini dengan baik:
sumber
Konversi waktu unix adalah baru di .NET Framework 4.6.
Anda sekarang dapat dengan lebih mudah mengonversi nilai tanggal dan waktu ke atau dari jenis .NET Framework dan waktu Unix. Ini bisa diperlukan, misalnya, ketika mengonversi nilai waktu antara klien JavaScript dan server .NET. API berikut telah ditambahkan ke struktur DateTimeOffset :
sumber
Saya menemukan jawaban yang tepat hanya dengan membandingkan konversi ke 1/1/1970 tanpa penyesuaian waktu setempat;
sumber
// 1510396991
// [11.11.2017 10:43:11 +00: 00]
sumber
Dari .net 4.6, Anda dapat melakukan ini:
sumber
Tentu saja, seseorang dapat membuat
unixEpoch
statis global, jadi itu hanya perlu muncul sekali dalam proyek Anda, dan satu dapat digunakanAddSeconds
jika waktu UNIX dalam detik.Untuk pergi ke arah lain:
Potong ke Int64 dan / atau gunakan
TotalSeconds
sesuai kebutuhan.sumber
Ditulis ekstensi paling sederhana yang berfungsi untuk kita. Jika ada yang mencarinya ...
sumber
sumber
Kutu Unix adalah 1 detik (jika saya ingat dengan baik), dan kutu .NET adalah 100 nanodetik.
Jika Anda pernah mengalami masalah dengan nanodetik, Anda mungkin ingin mencoba menggunakan AddTick (nilai 10000000 *).
sumber
Yang saya butuhkan untuk mengkonversi struct timeval (detik, mikrodetik) mengandung
UNIX time
keDateTime
tanpa kehilangan presisi dan belum menemukan jawaban di sini jadi saya pikir saya hanya bisa menambahkan saya:sumber
Anda dapat menggunakan DateTimeOffset .
Sebagai contoh. Saya memiliki objek DateTime
Jika saya ingin mengonversikannya ke waktu prangko Unix, saya dapat mencapai sebagai berikut
Untuk informasi lebih lanjut silakan kunjungi tautan ini: DateTimeOffset.ToUnixTimeSeconds Method
sumber
Anda dapat menghubungi UnixTime.UnixTimeToDateTime (double datetime))
sumber
Untuk .NET 4.6 dan yang lebih baru:
sumber