The other answer seems needlessly complicated. Here is my take using Joda-Time 2.3.
Berlin is 2 hours ahead of UTC because of Daylight Saving Time nonsense. So if UTC is 8 AM, then Berlin is 10 AM.
String inputRaw = "2014-04-03 08:25:20.0";
String input = inputRaw.replace( " ", "T" ); // Convert to strict ISO 8601 format.
DateTime dateTimeUtc = new DateTime( input, DateTimeZone.UTC );
DateTimeZone timeZoneBerlin = DateTimeZone.forID( "Europe/Berlin" );
DateTime dateTimeBerlin = dateTimeUtc.withZone( timeZoneBerlin );
Dump to console…
System.out.println( "input: " + input );
System.out.println( "dateTimeUtc: " + dateTimeUtc );
System.out.println( "dateTimeBerlin: " + dateTimeBerlin );
When run…
input: 2014-04-03T08:25:20.0
dateTimeUtc: 2014-04-03T08:25:20.000Z
dateTimeBerlin: 2014-04-03T10:25:20.000+02:00