Potrzebuję konwertować DateTime na uniksowy znacznik czasu. Więc googled to patrząc na niektóre przykładowy kodDlaczego DateTime do czasu Unix używa podwójne zamiast liczby całkowitej?
w niemal wszystkich wynikach widzę, używają double
jako zwrotu dla takiej funkcji, nawet jeśli jawnie przy użyciu floor
przekonwertować go na liczbę całkowitą. Uniksowe znaczniki czasu są zawsze liczbami całkowitymi. Więc jaki jest problem z używaniem long
lub int
zamiast podwójnego?
static double ConvertToUnixTimestamp(DateTime date)
{
DateTime origin = new DateTime(1970, 1, 1, 0, 0, 0, 0);
TimeSpan diff = date - origin;
return Math.Floor(diff.TotalSeconds);
}
IMHO nie po to, aby potwierdzić datę wprowadzenia. Powinien zwrócić długą lub ad-hoc struct – onof
Nie ma powodu, jest to po prostu zgniło kod. Rzucony na długi, nie może się przepełnić. –
Dodam, że z definicji czasomierz uniksowy to UTC. Metoda powinna sprawdzić, czy DateTime.Kind jest UTC, lokalny lub nieokreślony. Minimum, jeśli Local I przekonwertowałbym na UTC przed wykonaniem konwersji. Opcjonalnie, jeśli chcesz uniksowego znacznika czasu, który jest lokalny, możesz dodać przeciążenie lub parametr, aby nie przeprowadzić konwersji na UTC. – Nate