diff --git a/oKBereitschaftsplanungBackend/src/main/java/org/eclipse/openk/sp/controller/reports/ReportController.java b/oKBereitschaftsplanungBackend/src/main/java/org/eclipse/openk/sp/controller/reports/ReportController.java
index 3d0fd42..d4f54ca 100644
--- a/oKBereitschaftsplanungBackend/src/main/java/org/eclipse/openk/sp/controller/reports/ReportController.java
+++ b/oKBereitschaftsplanungBackend/src/main/java/org/eclipse/openk/sp/controller/reports/ReportController.java
@@ -25,11 +25,9 @@
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.Date;
-import java.util.GregorianCalendar;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
-import java.util.Locale;
 import java.util.Map;
 import java.util.Properties;
 import java.util.Random;
@@ -355,15 +353,11 @@
 	}
 
 	public void calcReportStartDate(StandbyScheduleBody body) {
-		GregorianCalendar calendar = new GregorianCalendar(Locale.GERMANY);
-		calendar.setTime(body.getValidFrom());
-		body.setStartDateStr(DateHelper.convertToLocalString(calendar.getTime(), "EE. dd.MM.yy HH:mm"));
+		body.setStartDateStr(DateHelper.convertToLocalString(body.getValidFrom(), null));
 	}
 
 	public void calcReportEndDate(StandbyScheduleBody body) {
-		GregorianCalendar calendar = new GregorianCalendar(Locale.GERMANY);
-		calendar.setTime(body.getValidTo());
-		body.setEndDateStr(DateHelper.convertToLocalString(calendar.getTime(), "EE. dd.MM.yy HH:mm"));
+		body.setEndDateStr(DateHelper.convertToLocalString(body.getValidTo(), null));
 	}
 
 	public IReportEngine initialiseBirtEngine() {
diff --git a/oKBereitschaftsplanungBackend/src/main/java/org/eclipse/openk/sp/mail/MailRequest.java b/oKBereitschaftsplanungBackend/src/main/java/org/eclipse/openk/sp/mail/MailRequest.java
index 4e75430..02e2a8a 100644
--- a/oKBereitschaftsplanungBackend/src/main/java/org/eclipse/openk/sp/mail/MailRequest.java
+++ b/oKBereitschaftsplanungBackend/src/main/java/org/eclipse/openk/sp/mail/MailRequest.java
@@ -96,10 +96,10 @@
 			String link = property.getProperty(Globals.LINK_DASHBOARD);
 			logger.info("read link from properties: " + link);
 
-			String strSBFrom = DateHelper.convertToLocalString(standbyBody.getValidFrom(), "EE. dd.MM.yy HH:mm");
-			String strSBTo = DateHelper.convertToLocalString(standbyBody.getValidTo(), "EE. dd.MM.yy HH:mm");
-			String strAcFrom = DateHelper.convertToLocalString(actionDto.getValidFrom(), "EE. dd.MM.yy HH:mm");
-			String strAcTo = DateHelper.convertToLocalString(actionDto.getValidTo(), "EE. dd.MM.yy HH:mm");
+			String strSBFrom = DateHelper.convertToLocalString(standbyBody.getValidFrom(), null);
+			String strSBTo = DateHelper.convertToLocalString(standbyBody.getValidTo(), null);
+			String strAcFrom = DateHelper.convertToLocalString(actionDto.getValidFrom(), null);
+			String strAcTo = DateHelper.convertToLocalString(actionDto.getValidTo(), null);
 
 			String body = generateHTML(template, standbyBody.getStandbyGroup().getTitle(), strSBFrom, strSBTo,
 					targetGroup.getTitle(), strAcFrom, strAcTo, link);
@@ -146,8 +146,8 @@
 
 			String userName = newUser.getFirstname() + " " + newUser.getLastname();
 			String link = property.getProperty(Globals.LINK_DASHBOARD);
-			String strAcFrom = DateHelper.convertToLocalString(actionDto.getValidFrom(), "EE. dd.MM.yy HH:mm");
-			String strAcTo = DateHelper.convertToLocalString(actionDto.getValidTo(), "EE. dd.MM.yy HH:mm");
+			String strAcFrom = DateHelper.convertToLocalString(actionDto.getValidFrom(), null);
+			String strAcTo = DateHelper.convertToLocalString(actionDto.getValidTo(), null);
 
 			String body = generateHTML(template, standbyGroup.getTitle(), strAcFrom, strAcTo, userName, link);
 
@@ -185,8 +185,8 @@
 
 			String userName = oldUser.getFirstname() + " " + oldUser.getLastname();
 			String link = property.getProperty(Globals.LINK_DASHBOARD);
-			String strAcFrom = DateHelper.convertToLocalString(actionDto.getValidFrom(), "EE. dd.MM.yy HH:mm");
-			String strAcTo = DateHelper.convertToLocalString(actionDto.getValidTo(), "EE. dd.MM.yy HH:mm");
+			String strAcFrom = DateHelper.convertToLocalString(actionDto.getValidFrom(), null);
+			String strAcTo = DateHelper.convertToLocalString(actionDto.getValidTo(), null);
 
 			String body = generateHTML(template, standbyGroup.getTitle(), userName, strAcFrom, strAcTo, link);
 
diff --git a/oKBereitschaftsplanungBackend/src/main/java/org/eclipse/openk/sp/util/DateHelper.java b/oKBereitschaftsplanungBackend/src/main/java/org/eclipse/openk/sp/util/DateHelper.java
index 61ebcf7..45556c3 100644
--- a/oKBereitschaftsplanungBackend/src/main/java/org/eclipse/openk/sp/util/DateHelper.java
+++ b/oKBereitschaftsplanungBackend/src/main/java/org/eclipse/openk/sp/util/DateHelper.java
@@ -15,11 +15,11 @@
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.util.Date;
+import java.util.GregorianCalendar;
 import java.util.List;
 import java.util.Locale;
 
 import org.joda.time.DateTime;
-
 import org.joda.time.Interval;
 import org.joda.time.LocalDateTime;
 import org.joda.time.MutableInterval;
@@ -80,10 +80,12 @@
 	 */
 	public static String convertToLocalString(Date date, String pattern) {
 
-		LocalDateTime localDate = LocalDateTime.fromDateFields(date);
+		GregorianCalendar calendar = new GregorianCalendar(Locale.GERMANY);
+		calendar.setTime(date);
+		LocalDateTime localDate = LocalDateTime.fromDateFields(calendar.getTime());
 
 		if (pattern == null) {
-			pattern = "dd.MM.yyyy";
+			pattern = "EE. dd.MM.yy HH:mm";
 		}
 
 		DateTimeFormatter jodaDTF = DateTimeFormat.forPattern(pattern);
