Cómo convertir Java.Util.Date a System.DateTime

En Xamarin.Android, trabaja con .NET y Java.

Obtengo un valor devuelto de Java.Util.Date, entonces necesito introducir ese mismo valor como un parámetro que sólo toma System.DateTime

Así es como lo hago actualmente

public static DateTime ConvertJavaDateToDateTime(Date date) { var a = date.ToGMTString(); var b = date.ToLocaleString(); var c = date.ToString(); DateTime datetime = DateTime.ParseExact(date.ToGMTString(), "dd MMM yyyy HH:mm:ss 'GMT'", CultureInfo.InvariantCulture); return datetime; } 

Sin embargo, en los primeros 9 días de cualquier mes, sólo obtengo 1 dígito para el día y la función DateTime.ParseExact está buscando dd (es decir, 2 dígitos para el día).

A es una cadena con valor "1 Sep 2014 14:32:25 GMT"

B es una cadena con valor "1 sep 2014 16:32:25"

C es una cadena con valor "Mon Sep 01 16:32:25 EET 2014"

Deseo que podría encontrar una solución simple, rápida, confiable y constante para este problema: D

java.util.Date tiene un método getTime() , que devuelve la fecha como un valor de milisegundos. El valor es el número de milisegundos desde el 1 de enero de 1970, medianoche GMT.

Con ese conocimiento, puede construir un System.DateTime , que coincida con este valor de la siguiente manera:

 public DateTime FromUnixTime(long unixTimeMillis) { var epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); return epoch.AddMilliseconds(unixTimeMillis); } 

(Método tomado de esta respuesta )

Actualizaré mi respuesta, ya que has cambiado la pregunta.

Puede usar un largo para mantener los milisegundos y convertir los milisegundos en tics (x10000) y crear un nuevo DateTime

 Date date = new Date(); Long milliseconds = date.getTime(); Long ticks = milliseconds * 10000 DateTime datetime = DateTime(ticks); 

Y si lo haces bien:

 public DateTime ConvertDateToDateTime(Date date) { SimpleDateFormat dateFormat = new SimpleDateFormat("YYYY-MM-DD hh:mm:ss"); String dateFormated = dateFormat.format(date); return new DateTime(dateFormated); } 

¿Así que funciona?

(No lo había entendido antes.) Lo siento = /)

Tuve este problema al autenticar con Facebook para recibir el tiempo de caducidad para el token. La solución fue hacer esto:

 var convertedTime = new DateTime(1970,1,1,0,0,0,DateTimeKind.Utc).AddMilliseconds(MyJavaUtil.Date.Time); 
 It is not tested but try with Calendar methods public static String ConvertJavaDateToDateTime(Date date) { Calendar c = new GregorianCalendar(); c.setTime(date); System.out.println(c.getTime()); return c.getTime(); } Prints: Tue Aug 06 00:00:00 EDT 2013 
 You can try with this also public DateTime dateAndTimeToDateTime(java.sql.Date date, java.sql.Time time) { String myDate = date + " " + time; SimpleDateFormat sdf = new SimpleDateFormat("dd MMM yyyy HH:mm:ss 'GMT'"); java.util.Date utilDate = new java.util.Date(); try { utilDate = sdf.parse(myDate); } catch (ParseException pe){ pe.printStackTrace(); } DateTime dateTime = new DateTime(utilDate); return dateTime; } 
  • Unix timestamp a datetime en android
  • Android get Tiempo UTC actual
  • Uso de la biblioteca Joda-Time para convertir la cadena al formato DateTime en Google Tasks API
  • ¿Cómo activar o no la opción "Fecha y hora automáticas"?
  • SimpleDateFormat toma demasiado tiempo cuando se incluye la zona horaria
  • Android Date.toLocaleString () - sin elementos de tiempo?
  • Diferencia, en minutos, entre dos fechas
  • ¿Cómo manejar las diferencias de la base de datos de horarios de JodaTime y Android?
  • ¿Cómo configurar el formato de 24 horas para la fecha en java?
  • Convertir la hora de la época en la fecha y la hora de la fecha en la época en Android
  • Primer día de semana en teléfonos Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.