diff --git a/src/charts/axis/cartesianchartaxis.cpp b/src/charts/axis/cartesianchartaxis.cpp
index 5872f998..f5ec5a5d 100644
--- a/src/charts/axis/cartesianchartaxis.cpp
+++ b/src/charts/axis/cartesianchartaxis.cpp
@@ -285,6 +285,24 @@ void CartesianChartAxis::setDateTimeLabelsFormat(const QString &format)
 #endif
 }
 
+void CartesianChartAxis::setDateTimeLabelsCalendar(const QCalendar &calendar)
+{
+    if ((max() <= min())
+        || (layout().size() < 1)
+        || (axis()->type() != QAbstractAxis::AxisTypeDateTime)) {
+        return;
+    }
+
+#if QT_CONFIG(charts_datetime_axis)
+
+    for (int i = 0; i < layout().size(); i++)
+    {
+        static_cast<DateTimeAxisLabel *>(labelItems().at(i))->setCalendar(calendar);
+    }
+
+#endif
+}
+
 void CartesianChartAxis::handleArrowPenChanged(const QPen &pen)
 {
     const auto arrows = arrowItems();
diff --git a/src/charts/axis/cartesianchartaxis_p.h b/src/charts/axis/cartesianchartaxis_p.h
index ecf9e496..b57dd512 100644
--- a/src/charts/axis/cartesianchartaxis_p.h
+++ b/src/charts/axis/cartesianchartaxis_p.h
@@ -38,6 +38,8 @@ public:
 
     void setDateTimeLabelsFormat(const QString &format);
 
+    void setDateTimeLabelsCalendar(const QCalendar &calendar);
+
 protected:
     void setGeometry(const QRectF &size) override { Q_UNUSED(size);}
     void updateGeometry() override = 0;
diff --git a/src/charts/axis/chartaxiselement.cpp b/src/charts/axis/chartaxiselement.cpp
index 0fb2a3fd..7d4555a6 100644
--- a/src/charts/axis/chartaxiselement.cpp
+++ b/src/charts/axis/chartaxiselement.cpp
@@ -582,7 +582,7 @@ QStringList ChartAxisElement::createLogValueLabels(qreal min, qreal max, qreal b
 }
 
 QStringList ChartAxisElement::createDateTimeLabels(qreal min, qreal max,int ticks,
-                                                   const QString &format) const
+                                                   const QString &format, const QCalendar &calendar) const
 {
     QStringList labels;
 
@@ -591,7 +591,7 @@ QStringList ChartAxisElement::createDateTimeLabels(qreal min, qreal max,int tick
 
     for (int i = 0; i < ticks; i++) {
         qreal value = min + (i * (max - min) / (ticks - 1));
-        labels << presenter()->locale().toString(QDateTime::fromMSecsSinceEpoch(value), format);
+        labels << presenter()->locale().toString(QDateTime::fromMSecsSinceEpoch(value), format, calendar);
     }
     return labels;
 }
diff --git a/src/charts/axis/chartaxiselement_p.h b/src/charts/axis/chartaxiselement_p.h
index cfc348c3..6d91c29c 100644
--- a/src/charts/axis/chartaxiselement_p.h
+++ b/src/charts/axis/chartaxiselement_p.h
@@ -82,7 +82,7 @@ public:
                                   QValueAxis::TickType tickType, const QString &format) const;
     QStringList createLogValueLabels(qreal min, qreal max, qreal base, int ticks,
                                      const QString &format) const;
-    QStringList createDateTimeLabels(qreal max, qreal min, int ticks, const QString &format) const;
+    QStringList createDateTimeLabels(qreal max, qreal min, int ticks, const QString &format, const QCalendar &calendar) const;
     QStringList createColorLabels(qreal min, qreal max, int ticks) const;
 
     // from QGraphicsLayoutItem
diff --git a/src/charts/axis/datetimeaxis/chartdatetimeaxisx.cpp b/src/charts/axis/datetimeaxis/chartdatetimeaxisx.cpp
index 4938bfd5..57e2e83d 100644
--- a/src/charts/axis/datetimeaxis/chartdatetimeaxisx.cpp
+++ b/src/charts/axis/datetimeaxis/chartdatetimeaxisx.cpp
@@ -43,7 +43,7 @@ void ChartDateTimeAxisX::updateGeometry()
     const QList<qreal> &layout = ChartAxisElement::layout();
     if (layout.isEmpty())
         return;
-    setLabels(createDateTimeLabels(min(), max(), layout.size(), m_axis->format()));
+    setLabels(createDateTimeLabels(min(), max(), layout.size(), m_axis->format(), m_axis->calendar()));
     HorizontalAxis::updateGeometry();
     updateLabelsDateTimes();
 }
@@ -71,8 +71,8 @@ QSizeF ChartDateTimeAxisX::sizeHint(Qt::SizeHint which, const QSizeF &constraint
     QSizeF sh;
 
     QSizeF base = HorizontalAxis::sizeHint(which, constraint);
-    const QStringList ticksList =
-            createDateTimeLabels(min(), max(), m_axis->tickCount(), m_axis->format());
+    const QStringList ticksList = createDateTimeLabels(min(), max(), m_axis->tickCount(),
+	m_axis->format(), m_axis->calendar());
     // Width of horizontal axis sizeHint indicates the maximum distance labels can extend past
     // first and last ticks. Base width is irrelevant.
     qreal width = 0;
diff --git a/src/charts/axis/datetimeaxis/chartdatetimeaxisy.cpp b/src/charts/axis/datetimeaxis/chartdatetimeaxisy.cpp
index 148ebb6c..8902f822 100644
--- a/src/charts/axis/datetimeaxis/chartdatetimeaxisy.cpp
+++ b/src/charts/axis/datetimeaxis/chartdatetimeaxisy.cpp
@@ -44,7 +44,7 @@ void ChartDateTimeAxisY::updateGeometry()
     const QList<qreal> &layout = ChartAxisElement::layout();
     if (layout.isEmpty())
         return;
-    setLabels(createDateTimeLabels(min(), max(), layout.size(), m_axis->format()));
+    setLabels(createDateTimeLabels(min(), max(), layout.size(), m_axis->format(), m_axis->calendar()));
     VerticalAxis::updateGeometry();
     updateLabelsDateTimes();
 }
diff --git a/src/charts/axis/datetimeaxis/datetimeaxislabel.cpp b/src/charts/axis/datetimeaxis/datetimeaxislabel.cpp
index 5f732233..7398e2f6 100644
--- a/src/charts/axis/datetimeaxis/datetimeaxislabel.cpp
+++ b/src/charts/axis/datetimeaxis/datetimeaxislabel.cpp
@@ -15,7 +15,7 @@ DateTimeAxisLabel::DateTimeAxisLabel(QGraphicsItem *parent) :
 void DateTimeAxisLabel::finishEditing()
 {
     QDateTime oldDateTime = m_dateTime;
-    QDateTime newDateTime = QDateTime::fromString(document()->toPlainText(), m_format);
+    QDateTime newDateTime = QDateTime::fromString(document()->toPlainText(), m_format, m_calendar);
     if (newDateTime.isValid() && newDateTime != m_dateTime) {
         m_dateTime = newDateTime;
         emit dateTimeChanged(oldDateTime, newDateTime);
@@ -49,10 +49,15 @@ void DateTimeAxisLabel::setFormat(const QString &format)
     m_format.replace(QChar::fromLatin1('\n'), QChar::fromLatin1(' '));
 }
 
+void  DateTimeAxisLabel::setCalendar(const QCalendar &calendar)
+{
+    m_calendar = calendar;
+}
+
 void DateTimeAxisLabel::setInitialEditValue()
 {
     m_dateTimeBeforeEdit = m_dateTime;
-    setHtml(m_dateTime.toString(m_format));
+    setHtml(m_dateTime.toString(m_format, m_calendar));
 }
 
 void DateTimeAxisLabel::keyPressEvent(QKeyEvent *event)
diff --git a/src/charts/axis/datetimeaxis/datetimeaxislabel_p.h b/src/charts/axis/datetimeaxis/datetimeaxislabel_p.h
index 4c5bf59c..5382569d 100644
--- a/src/charts/axis/datetimeaxis/datetimeaxislabel_p.h
+++ b/src/charts/axis/datetimeaxis/datetimeaxislabel_p.h
@@ -30,11 +30,13 @@ public:
     QDateTime value() const;
     void setValue(const QDateTime &value);
     void setFormat(const QString &format);
+    void setCalendar(const QCalendar &calendar);
 
 private:
     QDateTime m_dateTime;
     QDateTime m_dateTimeBeforeEdit;
     QString m_format;
+    QCalendar m_calendar;
 
     void setInitialEditValue() override;
     void finishEditing() override;
diff --git a/src/charts/axis/datetimeaxis/polarchartdatetimeaxisangular.cpp b/src/charts/axis/datetimeaxis/polarchartdatetimeaxisangular.cpp
index fbfa6ea2..fdc5b54e 100644
--- a/src/charts/axis/datetimeaxis/polarchartdatetimeaxisangular.cpp
+++ b/src/charts/axis/datetimeaxis/polarchartdatetimeaxisangular.cpp
@@ -38,7 +38,8 @@ QList<qreal> PolarChartDateTimeAxisAngular::calculateLayout() const
 }
 void PolarChartDateTimeAxisAngular::createAxisLabels(const QList<qreal> &layout)
 {
-    QStringList labelList = createDateTimeLabels(min(), max(), layout.size(), static_cast<QDateTimeAxis *>(axis())->format());
+    QDateTimeAxis *dateTimeAxis = static_cast<QDateTimeAxis *>(axis());
+    QStringList labelList = createDateTimeLabels(min(), max(), layout.size(), dateTimeAxis->format(), dateTimeAxis->calendar());
     setLabels(labelList);
 }
 
diff --git a/src/charts/axis/datetimeaxis/polarchartdatetimeaxisradial.cpp b/src/charts/axis/datetimeaxis/polarchartdatetimeaxisradial.cpp
index a0b3bfca..a61d689b 100644
--- a/src/charts/axis/datetimeaxis/polarchartdatetimeaxisradial.cpp
+++ b/src/charts/axis/datetimeaxis/polarchartdatetimeaxisradial.cpp
@@ -38,7 +38,8 @@ QList<qreal> PolarChartDateTimeAxisRadial::calculateLayout() const
 }
 void PolarChartDateTimeAxisRadial::createAxisLabels(const QList<qreal> &layout)
 {
-    setLabels(createDateTimeLabels(min(), max(), layout.size(), static_cast<QDateTimeAxis *>(axis())->format()));
+    QDateTimeAxis *dateTimeAxis = static_cast<QDateTimeAxis *>(axis());
+    setLabels(createDateTimeLabels(min(), max(), layout.size(), dateTimeAxis->format(), dateTimeAxis->calendar() ));
 }
 
 void PolarChartDateTimeAxisRadial::handleTickCountChanged(int tick)
diff --git a/src/charts/axis/datetimeaxis/qdatetimeaxis.cpp b/src/charts/axis/datetimeaxis/qdatetimeaxis.cpp
index c0465d2f..bd3947ca 100644
--- a/src/charts/axis/datetimeaxis/qdatetimeaxis.cpp
+++ b/src/charts/axis/datetimeaxis/qdatetimeaxis.cpp
@@ -245,6 +245,24 @@ QString QDateTimeAxis::format() const
     return d->m_format;
 }
 
+void  QDateTimeAxis::setCalendar(QCalendar calendar)
+{
+    Q_D(QDateTimeAxis);
+
+    d->m_calendar = calendar;
+    if (d->axisItem()) {
+        static_cast<CartesianChartAxis *>(d->axisItem())->setDateTimeLabelsCalendar(calendar);
+    }
+    emit  calendarChanged(calendar);
+}
+
+QCalendar  QDateTimeAxis::calendar() const
+{
+    Q_D(const QDateTimeAxis);
+
+    return d->m_calendar;
+}
+
 /*!
   Sets the number of tick marks on the axis to \a count.
 */
diff --git a/src/charts/axis/datetimeaxis/qdatetimeaxis.h b/src/charts/axis/datetimeaxis/qdatetimeaxis.h
index 91f73082..bb8c35f7 100644
--- a/src/charts/axis/datetimeaxis/qdatetimeaxis.h
+++ b/src/charts/axis/datetimeaxis/qdatetimeaxis.h
@@ -8,6 +8,7 @@
 
 QT_BEGIN_NAMESPACE
 class QDateTime;
+class QCalendar;
 QT_END_NAMESPACE
 
 QT_BEGIN_NAMESPACE
@@ -42,6 +43,8 @@ public:
     void setFormat(QString format);
     QString format() const;
 
+    void  setCalendar(QCalendar calendar);
+    QCalendar  calendar() const;
     //ticks handling
     void setTickCount(int count);
     int tickCount() const;
@@ -51,6 +54,7 @@ Q_SIGNALS:
     void maxChanged(QDateTime max);
     void rangeChanged(QDateTime min, QDateTime max);
     void formatChanged(QString format);
+    void calendarChanged(QCalendar calendar);
     void tickCountChanged(int tick);
 
 private:
diff --git a/src/charts/axis/datetimeaxis/qdatetimeaxis_p.h b/src/charts/axis/datetimeaxis/qdatetimeaxis_p.h
index 9f505dbd..1b418ee0 100644
--- a/src/charts/axis/datetimeaxis/qdatetimeaxis_p.h
+++ b/src/charts/axis/datetimeaxis/qdatetimeaxis_p.h
@@ -49,6 +49,7 @@ protected:
     qreal m_max;
     int m_tickCount;
     QString m_format;
+    QCalendar  m_calendar;
     Q_DECLARE_PUBLIC(QDateTimeAxis)
 };
 
