diff --git a/apps/mobile/packages/data_connect/lib/src/services/data_connect_service.dart b/apps/mobile/packages/data_connect/lib/src/services/data_connect_service.dart index 476d39f8..8e79de80 100644 --- a/apps/mobile/packages/data_connect/lib/src/services/data_connect_service.dart +++ b/apps/mobile/packages/data_connect/lib/src/services/data_connect_service.dart @@ -171,16 +171,23 @@ class DataConnectService with DataErrorHandler, SessionHandlerMixin { } } - /// Converts a Data Connect [Timestamp] to a Dart [DateTime]. + /// Converts a Data Connect [Timestamp] to a Dart [DateTime] in local time. + /// + /// Firebase Data Connect always stores and returns timestamps in UTC. + /// Calling [toLocal] ensures the result reflects the device's timezone so + /// that shift dates, start/end times, and formatted strings are correct for + /// the end user. DateTime? toDateTime(dynamic timestamp) { if (timestamp == null) return null; if (timestamp is fdc.Timestamp) { - return timestamp.toDateTime(); + return timestamp.toDateTime().toLocal(); } return null; } /// Converts a Dart [DateTime] to a Data Connect [Timestamp]. + /// + /// Converts the [DateTime] to UTC before creating the [Timestamp]. fdc.Timestamp toTimestamp(DateTime dateTime) { final DateTime utc = dateTime.toUtc(); final int millis = utc.millisecondsSinceEpoch; diff --git a/apps/mobile/packages/features/client/orders/create_order/lib/src/data/repositories_impl/client_create_order_repository_impl.dart b/apps/mobile/packages/features/client/orders/create_order/lib/src/data/repositories_impl/client_create_order_repository_impl.dart index c756a555..aea8a443 100644 --- a/apps/mobile/packages/features/client/orders/create_order/lib/src/data/repositories_impl/client_create_order_repository_impl.dart +++ b/apps/mobile/packages/features/client/orders/create_order/lib/src/data/repositories_impl/client_create_order_repository_impl.dart @@ -132,7 +132,7 @@ class ClientCreateOrderRepositoryImpl order.startDate.day, ); final Timestamp orderTimestamp = _service.toTimestamp(orderDateOnly); - final Timestamp startTimestamp = orderTimestamp; + final Timestamp startTimestamp = _service.toTimestamp(order.startDate); final Timestamp endTimestamp = _service.toTimestamp(order.endDate); final OperationResult @@ -259,7 +259,7 @@ class ClientCreateOrderRepositoryImpl order.startDate.day, ); final Timestamp orderTimestamp = _service.toTimestamp(orderDateOnly); - final Timestamp startTimestamp = orderTimestamp; + final Timestamp startTimestamp = _service.toTimestamp(order.startDate); final OperationResult orderResult = await _service.connector