小编pig*_*let的帖子

Mono中的DateTime.ToString返回无效日期("00/734718/0001 01:41:38")

我试图使用raspbian发行版("Debian GNU/Linux wheezy/sid")获得单声道(Debian 2.10.8.1-5)在我的覆盆子pi上正常运行.我用apt-get install mono-complete安装了mono.

但是,我遇到了一个我无法弄清楚的有趣问题.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"));
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

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
Run Code Online (Sandbox Code Playgroud)

有趣的是,734718似乎是自01/01/0001以来直到今天所经过的天数.我已尝试在第二块板上进行全新安装,但遇到同样的问题.

有没有人知道这里的问题是什么以及如何说服DateTime.ToString()返回正确的值?

更新(2012年8月4日):经过长时间挖掘单声道源代码后,我能够将问题追溯到System.Math.Floor.显然,它总是返回0.我将测试程序改为简单:

static void Main(string[] args)
{
    Console.WriteLine("Floor(1.5): " + System.Math.Floor(1.5)); …
Run Code Online (Sandbox Code Playgroud)

mono datetime raspberry-pi

12
推荐指数
2
解决办法
3735
查看次数

标签 统计

datetime ×1

mono ×1

raspberry-pi ×1