Estoy intentando que mono (Debian 2.10.8.1-5) funcione correctamente en mi raspberry pi con la distribución raspbian ("Debian GNU/Linux wheezy/sid"). He instalado mono con apt-get install mono-complete.DateTime.ToString in Mono return fecha no válida ("00/734718/0001 01:41:38")
Sin embargo, me encuentro con un problema interesante que no puedo entender. El método DateTime.ToString() devuelve una cadena no válida.
A continuación puede encontrar mi programa muestra con la salida de la consola:
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"));
}
}
}
Salida:
[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
Curiosamente, 734.718 parece ser el número de días transcurridos hasta hoy desde 01/01/0001. Lo he probado con una instalación nueva en una segunda placa pero con el mismo problema.
¿Alguien tiene una idea de cuál es el problema aquí y cómo convencer a DateTime.ToString() para que devuelva el valor correcto?
Actualización (8/4/2012): Después de un largo recorrido por el código fuente mono pude localizar el problema en System.Math.Floor. Al parecer, siempre devuelve 0. he cambiado de programa de prueba para un simple:
static void Main(string[] args)
{
Console.WriteLine("Floor(1.5): " + System.Math.Floor(1.5));
}
En Windows el resultado es "Suelo (1.5): 1" Mientras que en mi configuración mono en el pi frambuesa es "Suelo (1.5): 0 ". He visto que System.Math.Floor se implementa como
[MethodImplAttribute (MethodImplOptions.InternalCall)]
public extern static double Floor (double d);
Mañana, voy a profundizar en este tema. ¿Alguien sabe por qué podría existir este problema?
También entré en este problema. ¿Has encontrado alguna solución? – Reniuz
Quizás relacionado: 'DateTime.Now.ToString (" MM ")' arroja 'System.ArgumentOutOfRangeException' en mi raspberry-pi usando mono 2.10.8.1 – weberph