summaryrefslogtreecommitdiff
path: root/docs/src/reference
diff options
context:
space:
mode:
Diffstat (limited to 'docs/src/reference')
-rw-r--r--docs/src/reference/types.md141
1 files changed, 141 insertions, 0 deletions
diff --git a/docs/src/reference/types.md b/docs/src/reference/types.md
index 2fceb2b3..13ca8720 100644
--- a/docs/src/reference/types.md
+++ b/docs/src/reference/types.md
@@ -174,6 +174,147 @@ Produces the negative of the color.
- returns: color
+# Datetime
+Represents a date, a time, or a combination of both. Can be created by either
+specifying a custom datetime using the [`datetime`]($func/datetime) function or
+getting the current date with [`datetime.today`]($func/datetime.today).
+
+## Example
+```example
+#let date = datetime(
+ year: 2020,
+ month: 10,
+ day: 4,
+)
+
+#date.display() \
+#date.display("y:[year repr:last_two]")
+
+#let time = datetime(
+ hour: 18,
+ minute: 2,
+ second: 23,
+)
+
+#time.display() \
+#time.display("h:[hour repr:12][period]")
+```
+
+## Format
+You can specify a customized formatting using the `display` method.
+The format of a datetime is specified by providing
+_components_ with a specified number of _modifiers_. A component represents a
+certain part of the datetime that you want to display, and with the help of
+modifiers you can define how you want to display that component. In order to
+display a component, you wrap the name of the component in square brackets
+(e.g. `[year]` will display the year). In order to add modifiers,
+you add a space after the component name followed by the name of the modifier,
+a colon and the value of the modifier (e.g. `[month repr:short]` will display
+the short representation of the month).
+
+The possible combination of components and their respective modifiers is as
+follows:
+
+* `year`: Displays the year of the datetime.
+ * `padding`: Can be either `zero`, `space` or `none`. Specifies how the year
+ is padded.
+ * `repr` Can be either `full` in which case the full year is displayed or
+ `last_two` in which case only the last two digits are displayed.
+ * `sign`: Can be either `automatic` or `mandatory`. Specifies when the sign
+ should be displayed.
+* `month`: Displays the month of the datetime.
+ * `padding`: Can be either `zero`, `space` or `none`. Specifies how the month
+ is padded.
+ * `repr`: Can be either `numerical`, `long` or `short`. Specifies if the month
+ should be displayed as a number or a word. Unfortunately, when choosing the
+ word representation, it can currently only display the English version. In
+ the future, it is planned to support localization.
+* `day`: Displays the day of the datetime.
+ * `padding`: Can be either `zero`, `space` or `none`. Specifies how the day
+ is padded.
+* `week_number`: Displays the week number of the datetime.
+ * `padding`: Can be either `zero`, `space` or `none`. Specifies how the week
+ number is padded.
+ * `repr`: Can be either `ISO`, `sunday` or `monday`. In the case of `ISO`,
+ week numbers are between 1 and 53, while the other ones are between 0
+ and 53.
+* `weekday`: Displays the weekday of the date.
+ * `repr` Can be either `long`, `short`, `sunday` or `monday`. In the case of
+ `long` and `short`, the corresponding English name will be displayed (same
+ as for the month, other languages are currently not supported). In the case
+ of `sunday` and `monday`, the numerical value will be displayed (assuming
+ Sunday and Monday as the first day of the week, respectively).
+ * `one_indexed`: Can be either `true` or `false`. Defines whether the
+ numerical representation of the week starts with 0 or 1.
+* `hour`: Displays the hour of the date.
+ * `padding`: Can be either `zero`, `space` or `none`. Specifies how the hour
+ is padded.
+ * `repr`: Can be either `24` or `12`. Changes whether the hour is displayed in
+ the 24-hour or 12-hour format.
+* `period`: The AM/PM part of the hour
+ * `case`: Can be `lower` to display it in lower case and `upper` to display it
+ in upper case.
+* `minute`: Displays the minute of the date.
+ * `padding`: Can be either `zero`, `space` or `none`. Specifies how the minute
+ is padded.
+* `second`: Displays the second of the date.
+ * `padding`: Can be either `zero`, `space` or `none`. Specifies how the second
+ is padded.
+
+Keep in mind that not always all components can be used. For example, if
+you create a new datetime with `#datetime(year: 2023, month: 10, day: 13)`, it
+will be stored as a plain date internally, meaning that you cannot use
+components such as `hour` or `minute`, which would only work on datetimes
+that have a specified time.
+
+## Methods
+### display()
+Displays the datetime in a certain way. Depending on whether you have defined
+just a date, a time or both, the default format will be different.
+If you specified a date, it will be `[year]-[month]-[day]`. If you specified a
+time, it will be `[hour]:[minute]:[second]`. In the case of a datetime, it will
+be `[year]-[month]-[day] [hour]:[minute]:[second]`.
+
+- pattern: string (positional)
+ The format used to display the datetime.
+- returns: string
+
+### year()
+Returns the year of the datetime, if it exists. Otherwise, it returns `none`.
+
+- returns: integer or none
+
+### month()
+Returns the month of the datetime, if it exists. Otherwise, it returns `none`.
+
+- returns: integer or none
+
+### weekday()
+Returns the weekday of the datetime as a number starting with 1 from Monday, if
+it exists. Otherwise, it returns `none`.
+
+- returns: integer or none
+
+### day()
+Returns the day of the datetime, if it exists. Otherwise, it returns `none`.
+
+- returns: integer or none
+
+### hour()
+Returns the hour of the datetime, if it exists. Otherwise, it returns `none`.
+
+- returns: integer or none
+
+### minute()
+Returns the minute of the datetime, if it exists. Otherwise, it returns `none`.
+
+- returns: integer or none
+
+### second()
+Returns the second of the datetime, if it exists. Otherwise, it returns `none`.
+
+- returns: integer or none
+
# Symbol
A Unicode symbol.