Próbuję uzyskać mono (Debian 2.10.8.1-5), aby działał poprawnie na moim raspberry pi z dystrybucją raspbian ("Debian GNU/Linux wheezy/sid"). Zainstalowałem mono z apt-get install mono-complete.DateTime.ToString w Mono zwraca niepoprawną datę ("00/734718/0001 01:41:38")
Jednak mam ciekawy problem, którego nie mogę zrozumieć. Metoda DateTime.ToString() zwraca niepoprawny ciąg.
Poniżej można znaleźć przykładowy program z wyjściem konsoli:
using System;
namespace MonoTest
{
class Program
{
static void Main(string[] args)
{
DateTime now = DateTime.Now;
Console.WriteLine("Year: " + now.Year);
Console.WriteLine("Month: " + now.Month);
Console.WriteLine("Day: " + now.Day);
Console.WriteLine("DayOfWeek: " + now.DayOfWeek);
Console.WriteLine("DateTime.Now: " + DateTime.Now);
Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd"));
}
}
}
wyjściowa:
[email protected] ~/bin $ mono MonoTest.exe
Year: 2012
Month: 8
Day: 3
DayOfWeek: Friday
DateTime.Now: 00/734718/0001 01:41:38
0001-00-734718
Co ciekawe, 734718 wydaje się być liczba dni, które upłynęły do dziś od 01/01/0001. Spróbowałem go ze świeżą instalacją na drugiej planszy, ale z tym samym problemem.
Czy ktoś ma pomysł, jaki jest tutaj problem i jak przekonać DateTime.ToString(), aby zwrócić właściwą wartość?
Aktualizacja (8/4/2012): Po długim wykopaniu kodu źródłowego mono udało mi się prześledzić problem z powrotem do System.Math.Floor. Wydaje się, że zawsze zwraca 0. zmieniłem program testowy na prostą:
static void Main(string[] args)
{
Console.WriteLine("Floor(1.5): " + System.Math.Floor(1.5));
}
W Windows wynik jest „Piętro (1.5): 1” Zważywszy na mojej konfiguracji mono na pi malinowym to „Piętro (1,5): 0 ". Widziałem, że System.Math.Floor jest zaimplementowany jako
[MethodImplAttribute (MethodImplOptions.InternalCall)]
public extern static double Floor (double d);
Jutro będę szukać dalej w tej kwestii. Czy ktoś wie, dlaczego ten problem mógł istnieć?
Podszedłem również do tego problemu. Czy znalazłeś jakieś rozwiązanie? – Reniuz
Może być powiązany: 'DateTime.Now.ToString (" MM ")' wyrzuca 'System.ArgumentOutOfRangeException' na moim raspberry-pi używając mono 2.10.8.1 – weberph