Hora UTC + hora de Joda

Estoy tratando de obtener el UTC TimeStamp en un programa Java simple usando Joda:

public Timestamp getCurrentUTC(LocalDateTime date, DateTimeZone srcTZ, DateTimeZone dstTZ, Locale l) {
    DateTime srcDateTime = date.toDateTime(srcTZ);
    DateTime dstDateTime = srcDateTime.toDateTime(dstTZ);

    System.out.println("UTC Time:" + dstDateTime.getMillis());      
    System.out.println("UTC Time:" + new Timestamp(dstDateTime.getMillis()));

    return new Timestamp(dstDateTime.getMillis());
}

La salida del programa es la siguiente:

UTC Time:1378265162047
UTC Time:2013-09-03 23:26:02.047

El valor de milisegundos es el tiempo UTC correcto (es decir, confirmado conGMT-4 zona horaria) El segundo valor es elEST zona horaria.

Lo que necesito es el valor UTC sin cambios comojava.sql.Timestamp (es decir, TZ independiente), para una base de datos de escritura. es posible?

Editar 1
DateTime srcDateTime = date.toDateTime(srcTZ);

DateTime dstDateTime = srcDateTime.toDateTime(dstTZ);

System.out.println("UTC Time:" + dstDateTime.getMillis());

Yo sé esosrcDateTime es la fecha local (GMT-4), ydstDateTime es UTC (GMT-0). Los valores de salida de las fechas son los siguientes:

Source Date:2013-09-04T09:10:43.683-04:00

Destination Date: 2013-09-04T13:10:43.683Z

Probé todas las combinaciones para intentar obtener el valor UTC dedstDateTime como java.sql.TimeStamp:

System.out.println("UTC Time:" + dstDateTime.getMillis());

System.out.println("UTC Time:" + new Timestamp(srcDateTime.toDateTime(DateTimeZone.UTC).getMillis()));

System.out.println("UTC Time:" + new Timestamp(dstDateTime.toDateTime(DateTimeZone.UTC).getMillis()));

La salida de impresión para la prueba:

UTC Time:1378298760226 - Correct UTC

UTC Time:2013-09-04 08:46:00.226 - Incorrect Local Date Time instead of the Expected UTC

UTC Time:2013-09-04 08:46:00.226 - Incorrect Local Date Time instead of the Expected UTC

La primera línea de impresión es la marca de tiempo UTC correcta. Todo lo que necesito es el mismo valor que el tipo java.sql.TimeStamp. Todo lo que probé siempre devolvió la fecha local de la máquina.

Editar 2

Intenté lo siguiente:

System.out.println("UTC Timestamp:" + date.toDateTime(srcTZ).getMillis());
System.out.println("UTC Timestamp:" + new Timestamp(date.toDateTime(srcTZ).getMillis()));

La salida es la siguiente:

UTC Time:1378342856315 - Correct UTC Time
UTC Timestap:2013-09-04 21:00:56.315 - Local Time other than the expected UTC Time

Cada vez que intento convertir a TimeStamp, pierdo el valor UTC válido que busco.

En términos de los parámetros del método:

srcTZ = DateTimeZone.forTimeZone(TimeZone.getTimeZone("America/Montreal")
dstTZ = DateTimeZone.forTimeZone(TimeZone.getTimeZone("Etc/UTC"))
Local l = new Locale("en", "CA")

Cualquier ayuda es muy apreciada.

Mella.

Editar 3

Hola mate

Muchas gracias por su respuesta. Estamos obteniendo los mismos resultados que usted. No sabía nada sobre la impresión, etc. Más específicamente:

System.out.println("UTC Timestamp:" + srcDateTime.toDateTime(dstTZ).getMillis());
System.out.println("UTC Timestamp:" + srcDateTime.toDateTime(dstTZ));
System.out.println("UTC Timestamp:" + new Timestamp(srcDateTime.toDateTime(dstTZ).getMillis()));

Cede la salida:

UTC Timestamp:1378389098468 - Correct UTC Timestap (Thu, 05 Sep 2013 13:51:38 GMT)
UTC Timestamp:2013-09-05T13:51:38.468Z - Correct UTC Time
UTC Timestamp:2013-09-05 09:51:38.468 - Local time is printed, UTC is expected

El problema me llamó la atención cuando nos dimos cuenta de que el DB estaba almacenando la hora local en lugar de UTC:

+---------------------+
| effectivedate       |
+---------------------+
| 2013-09-05 09:34:11 |
+---------------------+

La zona horaria Mysql se establece en '-00: 00'

mysql> SELECT CURRENT_TIMESTAMP;
+---------------------+
| CURRENT_TIMESTAMP   |
+---------------------+
| 2013-09-05 13:48:09 |
+---------------------+

Al depurar la aplicación utilizando el depurador de eclipse, nos dimos cuenta de que la fecha y hora local (2013-09-05 09: 51: 38.468) se pasaba a la base de datos (No se pueden publicar imágenes, no hay suficientes puntos ...). El tipo de datos es TimeStamp directo, sin manipulación de cadenas. Tal vez el depurador de eclipse está utilizandoString.println() funciona también, no estoy seguro ..

Realmente aprecio toda la ayuda depurando nuestra aplicación. No quería gastar tanto tiempo (sin juego de palabras) y esfuerzo ...

Saludos cordiales,

Mella.

Respuestas a la pregunta(5)

Su respuesta a la pregunta