diff --git a/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/grid/ob-grid.js b/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/grid/ob-grid.js
--- a/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/grid/ob-grid.js
+++ b/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/grid/ob-grid.js
@@ -649,7 +649,8 @@
       viewState: expProp.viewState,
       tab: expProp.tab,
       exportToFile: true,
-      _textMatchStyle: 'substring'
+      _textMatchStyle: 'substring',
+      _UTCOffsetMiliseconds: OB.Utilities.Date.getUTCOffsetInMiliseconds()
     }, lcriteria, this.getFetchRequestParams());
     if (this.getSortField()) {
       sortCriteria = this.getSort();
diff --git a/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/utilities/ob-utilities-date.js b/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/utilities/ob-utilities-date.js
--- a/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/utilities/ob-utilities-date.js
+++ b/modules/org.openbravo.client.application/web/org.openbravo.client.application/js/utilities/ob-utilities-date.js
@@ -23,7 +23,6 @@
 // = Openbravo Date Utilities =
 // Defines utility methods related to handling date, incl. formatting.
 OB.Utilities.Date = {};
-
 // ** {{{ OB.Utilities.Date.centuryReference }}} **
 // For a two-digit year display format, it establishes where is the frontier
 // between the 20th and the 21st century
@@ -271,5 +270,14 @@
         newData[j][timeFields[i]] = fieldToDate.getHours() + ':' + fieldToDate.getMinutes() + ':' + fieldToDate.getSeconds();
       }
     }
+  };
+
+  //** {{{ OB.Utilities.Date.getUTCOffsetInMiliseconds }}} **
+  //
+  // Return the offset with UTC measured in miliseconds
+  OB.Utilities.Date.getUTCOffsetInMiliseconds = function () {
+    var UTCHourOffset = isc.Time.getUTCHoursDisplayOffset(new Date()),
+        UTCMinuteOffset = isc.Time.getUTCMinutesDisplayOffset(new Date());
+    return (UTCHourOffset * 60 * 60 * 1000) + (UTCMinuteOffset * 60 * 1000);
   }
 };
\ No newline at end of file
diff --git a/modules/org.openbravo.service.datasource/src/org/openbravo/service/datasource/DataSourceServlet.java b/modules/org.openbravo.service.datasource/src/org/openbravo/service/datasource/DataSourceServlet.java
--- a/modules/org.openbravo.service.datasource/src/org/openbravo/service/datasource/DataSourceServlet.java
+++ b/modules/org.openbravo.service.datasource/src/org/openbravo/service/datasource/DataSourceServlet.java
@@ -25,6 +25,7 @@
 import java.text.DecimalFormat;
 import java.text.SimpleDateFormat;
 import java.util.ArrayList;
+import java.util.Calendar;
 import java.util.Date;
 import java.util.Enumeration;
 import java.util.HashMap;
@@ -262,6 +263,7 @@
     List<String> dateTimeCols = new ArrayList<String>();
     List<String> numericCols = new ArrayList<String>();
     Map<String, DecimalFormat> formats = new HashMap<String, DecimalFormat>();
+    int clientUTCOffsetMiliseconds;
 
     public QueryJSONWriterToCSV(HttpServletRequest request, HttpServletResponse response,
         Map<String, String> parameters, Entity entity) {
@@ -301,6 +303,11 @@
           log.warn("Warning: CSV Field separator is identical to the decimal separator. Changing the field separator to "
               + fieldSeparator + " to avoid generating a wrong CSV file");
         }
+        if (parameters.get("_UTCOffsetMiliseconds").length() > 0) {
+          clientUTCOffsetMiliseconds = Integer.parseInt(parameters.get("_UTCOffsetMiliseconds"));
+        } else {
+          clientUTCOffsetMiliseconds = 0;
+        }
         fieldProperties = new ArrayList<String>();
         if (parameters.get("viewState") != null
             && !parameters.get("viewState").toString().equals("undefined")) {
@@ -515,12 +522,13 @@
           } else if (dateTimeCols.contains(key) && keyValue != null
               && !keyValue.toString().equals("null")) {
             final String repairedString = JsonUtils.convertFromXSDToJavaFormat(keyValue.toString());
-            Date date = JsonUtils.createDateTimeFormat().parse(repairedString);
+            Date localDate = JsonUtils.createDateTimeFormat().parse(repairedString);
+            Date clientTimezoneDate = convertFromLocalToClientTimezone(localDate);
             String pattern = RequestContext.get().getSessionAttribute("#AD_JAVADATETIMEFORMAT")
                 .toString();
             SimpleDateFormat dateFormat = new SimpleDateFormat(pattern);
             dateFormat.setLenient(true);
-            keyValue = dateFormat.format(date);
+            keyValue = dateFormat.format(clientTimezoneDate);
           }
 
           if (keyValue != null && !keyValue.toString().equals("null")) {
@@ -537,6 +545,22 @@
         throw new OBException("Error while exporting CSV information", e);
       }
     }
+
+    private Date convertFromLocalToClientTimezone(Date localDate) {
+      Calendar now = Calendar.getInstance();
+      Calendar calendar = Calendar.getInstance();
+      calendar.setTime(localDate);
+      calendar.set(Calendar.DATE, now.get(Calendar.DATE));
+      calendar.set(Calendar.MONTH, now.get(Calendar.MONTH));
+      calendar.set(Calendar.YEAR, now.get(Calendar.YEAR));
+
+      int gmtMillisecondOffset = (now.get(Calendar.ZONE_OFFSET) + now.get(Calendar.DST_OFFSET));
+      calendar.add(Calendar.MILLISECOND, -gmtMillisecondOffset);
+
+      calendar.add(Calendar.MILLISECOND, clientUTCOffsetMiliseconds);
+
+      return calendar.getTime();
+    }
   }
 
   private void handleException(Exception e, HttpServletResponse response) throws IOException {
