DateTime.ToString в Mono возвращает неверную дату («00/734718/0001 01 :41 :38»)

Я пытаюсь заставить моно (Debian 2.10.8.1 -5 )правильно работать на моем raspberry pi с дистрибутивом raspbian («Debian GNU/Linux wheezy/sid» ). Я установил моно с помощью apt -, чтобы завершить установку моно -.

Однако я столкнулся с интересной проблемой, которую не могу понять. Метод DateTime.ToString ()возвращает недопустимую строку.

Ниже вы можете найти мой пример программы с выводом на консоль:

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"));
        }
    }
}

Выход:

pi@raspberrypi ~/bin $ mono MonoTest.exe
Year: 2012
Month: 8
Day: 3
DayOfWeek: Friday
DateTime.Now: 00/734718/0001 01:41:38
0001-00-734718

Интересно, что 734718 — это количество дней, прошедших до сегодняшнего дня с 01.01.0001. Я попробовал это с новой установкой на второй плате, но с той же проблемой.

Кто-нибудь знает, в чем здесь проблема и как убедить DateTime.ToString ()вернуть правильное значение?

Обновление (04.08.2012):После долгих копаний в исходном коде моно я смог отследить проблему до System.Math.Floor. Судя по всему, он всегда возвращает 0. Я изменил свою тестовую программу на простую:

static void Main(string[] args)
{
    Console.WriteLine("Floor(1.5): " + System.Math.Floor(1.5));
}

В Windows результат «Этаж (1,5 ):1», тогда как в моей моноустановке на Raspberry Pi это «Этаж (1,5 ):0». Я видел, что System.Math.Floor реализован как

[MethodImplAttribute (MethodImplOptions.InternalCall)]
public extern static double Floor (double d);

Завтра буду дальше разбираться в этом вопросе. Кто-нибудь знает, почему эта проблема может существовать?

12
задан piglet 4 August 2012 в 06:56
поделиться