---
name: "QwtDate"
section: "3"
platform: "linux"
package: "libqwt-doc"
version: "6.1.4-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/QwtDate"
---

# QwtDate(3)

A collection of methods around date/time values.

## NAME

QwtDate - A collection of methods around date/time values.

## SYNOPSIS

`#include <qwt_date.h>`

### Public Types

enum **Week0Type** { **FirstThursday**, **FirstDay** }\
 enum **IntervalType** { **Millisecond**, **Second**, **Minute**, **Hour**, **Day**, **Week**, **Month**, **Year** }\
 enum { **JulianDayForEpoch** = 2440588 }\

### Static Public Member Functions

static QDate **minDate** ()\
 static QDate **maxDate** ()\
 static QDateTime **toDateTime** (double value, Qt::TimeSpec=Qt::UTC)\
 static double **toDouble** (const QDateTime &)\
 static QDateTime **ceil** (const QDateTime &, **IntervalType**)\
 static QDateTime **floor** (const QDateTime &, **IntervalType**)\
 static QDate **dateOfWeek0** (int year, **Week0Type**)\
 Date of the first day of the first week for a year.  static int **weekNumber** (const QDate &, **Week0Type**)\
 static int **utcOffset** (const QDateTime &)\
 static QString **toString** (const QDateTime &, const QString &format, **Week0Type**)\

## Detailed Description

A collection of methods around date/time values.

Qt offers convenient classes for dealing with date/time values, but Qwt uses coordinate systems that are based on doubles. **QwtDate** offers methods to translate from QDateTime to double and v.v.

A double is interpreted as the number of milliseconds since 1970-01-01T00:00:00 Universal Coordinated Time - also known as 'The Epoch'.

While the range of the Julian day in Qt4 is limited to \[0, MAX\_INT\], Qt5 stores it as qint64 offering a huge range of valid dates. As the significance of a double is below this ( assuming a fraction of 52 bits ) the translation is not bijective with rounding errors for dates very far from Epoch. For a resolution of 1 ms those start to happen for dates above the year 144683.

An axis for a date/time interval is expected to be aligned and divided in time/date units like seconds, minutes, ... **QwtDate** offers several algorithms that are needed to calculate these axes.

**See also:**

**QwtDateScaleEngine**, **QwtDateScaleDraw**, QDate, QTime

## Member Enumeration Documentation

### anonymous enum

**Enumerator**

- *JulianDayForEpoch*

  *The Julian day of 'The Epoch'.*

### enum QwtDate::IntervalType

*Classification of an time interval*

*Time intervals needs to be classified to decide how to align and divide it.*

**Enumerator**

- *Millisecond*

  *The interval is related to milliseconds.*

- *Second*

  *The interval is related to seconds.*

- *Minute*

  *The interval is related to minutes.*

- *Hour*

  *The interval is related to hours.*

- *Day*

  *The interval is related to days.*

- *Week*

  *The interval is related to weeks.*

- *Month*

  *The interval is related to months.*

- *Year*

  *The interval is related to years.*

### enum QwtDate::Week0Type

*How to identify the first week of year differs between countries.*

**Enumerator**

- *FirstThursday*

  *According to ISO 8601 the first week of a year is defined as 'the week with the year's first Thursday in it'.*

*FirstThursday corresponds to the numbering that is implemented in QDate::weekNumber().*

- *FirstDay*

  *In the U.S. this definition is more common than FirstThursday.*

## Member Function Documentation

### QDateTime QwtDate::ceil (const QDateTime & dateTime, IntervalType intervalType)` [static]`

*Ceil a datetime according the interval type*

**Parameters:**

*dateTime Datetime value* \
 *intervalType Interval type, how to ceil. F.e. when intervalType = QwtDate::Months, the result will be ceiled to the next beginning of a month*

**Returns:**

*Ceiled datetime*

**See also:**

**floor()**

### QDate QwtDate::dateOfWeek0 (int year, Week0Type type)` [static]`

*Date of the first day of the first week for a year. The first day of a week depends on the current locale ( QLocale::firstDayOfWeek() ).*

**Parameters:**

*year Year* \
 *type Option how to identify the first week*

**Returns:**

*First day of week 0*

**See also:**

*QLocale::firstDayOfWeek(),* **weekNumber()**

### QDateTime QwtDate::floor (const QDateTime & dateTime, IntervalType intervalType)` [static]`

*Floor a datetime according the interval type*

**Parameters:**

*dateTime Datetime value* \
 *intervalType Interval type, how to ceil. F.e. when intervalType = QwtDate::Months, the result will be ceiled to the next beginning of a month*

**Returns:**

*Floored datetime*

**See also:**

**floor()**

### QDate QwtDate::maxDate ()` [static]`

*Maximum for the supported date range*

*The range of valid dates depends on how QDate stores the Julian day internally.*

- •

  *For Qt4 it is 'Tue Jun 3 5874898'*

- •

  *For Qt5 it is 'Tue Dec 31 2147483647'*

**Returns:**

*maximum of the date range*

**See also:**

**minDate()**

**Note:**

*The maximum differs between Qt4 and Qt5*

### QDate QwtDate::minDate ()` [static]`

*Minimum for the supported date range*

*The range of valid dates depends on how QDate stores the Julian day internally.*

- •

  *For Qt4 it is 'Tue Jan 2 -4713'*

- •

  *For Qt5 it is 'Thu Jan 1 -2147483648'*

**Returns:**

*minimum of the date range*

**See also:**

**maxDate()**

### QDateTime QwtDate::toDateTime (double value, Qt::TimeSpec timeSpec = `Qt::UTC`)` [static]`

*Translate from double to QDateTime*

**Parameters:**

*value Number of milliseconds since the epoch, 1970-01-01T00:00:00 UTC* \
 *timeSpec Time specification*

**Returns:**

*Datetime value*

**See also:**

**toDouble()***, QDateTime::setMSecsSinceEpoch()*

**Note:**

*The return datetime for Qt::OffsetFromUTC will be Qt::UTC*

### double QwtDate::toDouble (const QDateTime & dateTime)` [static]`

*Translate from QDateTime to double*

**Parameters:**

*dateTime Datetime value*

**Returns:**

*Number of milliseconds since 1970-01-01T00:00:00 UTC has passed.*

**See also:**

**toDateTime()***, QDateTime::toMSecsSinceEpoch()*

**Warning:**

*For values very far below or above 1970-01-01 UTC rounding errors will happen due to the limited significance of a double.*

### QString QwtDate::toString (const QDateTime & dateTime, const QString & format, Week0Type week0Type)` [static]`

*Translate a datetime into a string*

*Beside the format expressions documented in QDateTime::toString() the following expressions are supported:*

- •

  *w*\
  \
    *week number: ( 1 - 53 )*

- •

  *ww*\
  \
    *week number with a leading zero ( 01 - 53 )*

*As week 1 usually starts in the previous year a special rule is applied for formats, where the year is expected to match the week number - even if the date belongs to the previous year.*

**Parameters:**

*dateTime Datetime value* \
 *format Format string* \
 *week0Type Specification of week 0*

**Returns:**

*Datetime string*

**See also:**

*QDateTime::toString(),* **weekNumber()***,* **QwtDateScaleDraw**

### int QwtDate::utcOffset (const QDateTime & dateTime)` [static]`

*Offset in seconds from Coordinated Universal Time*

*The offset depends on the time specification of dateTime:*

- •

  *Qt::UTC 0, dateTime has no offset*

- •

  *Qt::OffsetFromUTC returns dateTime.utcOffset()*

- •

  *Qt::LocalTime: number of seconds from the UTC*

*For Qt::LocalTime the offset depends on the timezone and daylight savings.*

**Parameters:**

*dateTime Datetime value*

**Returns:**

*Offset in seconds*

### int QwtDate::weekNumber (const QDate & date, Week0Type type)` [static]`

*Find the week number of a date*

- •

  **QwtDate::FirstThursday**\
  \
    *Corresponding to ISO 8601 ( see QDate::weekNumber() ).*

- •

  **QwtDate::FirstDay**\
  \
    *Number of weeks that have begun since* **dateOfWeek0()***.*

**Parameters:**

*date Date* \
 *type Option how to identify the first week*

**Returns:**

*Week number, starting with 1*

## Author

*Generated automatically by Doxygen for Qwt User's Guide from the source code.*
