Julia provides a library to use Dates for dealing with date and time. The Dates module comes inbuilt with the Julia we just need to import it in order to use it. Now we need to prefix every function with an explicit type Dates, e.g Dates.Date. If you don’t want to prefix on each function just add using Dates in your code and then you will be able to use any function of Dates without using Dates as a prefix.
The Dates module provides supplies classes to work with date and time. There are many functions available that are used to manipulate Date and Time in Julia.
For working with Date the DateTime provides two main Modules: Date and DateTime are mostly used. They both are subtypes of the abstract TimeType.
Getting Different Types of Dates
Dates.Date( year, month, date): It returns date with provided parameters. It is independent of time zones.
Dates.Date(year): It returns date with the provided year, and the month, the day is set to 01
Dates.Date(year, month): It returns date with the provided year and month, and the date is set to 01.
Dates.DateTime( year, month, date, hour, min, sec): It returns date and time and it specifies the exact moment in time. The accuracy is to a millisecond.
Dates.today(): It provides the Date object for the current date
Dates.now(): It returns a DateTime object for the current instance in time.
Dates.now(Dates.UTC): It returns date with Coordinated Universal Time (UTC) time zone.
# import Dates module
# returns date with provided parameter and independent of time zone
d =Dates.Date(2001, 12, 12)
# returns a date with the provided year, and the month and day are set to 01
# returns a date with the provided year and month, and the day is set to 01
d =Dates.Date(2001, 11)
# returns date and time and it specifies the exact moment in time. The accuracy is to a millisecond.
d =Dates.DateTime(2001, 10, 1, 12, 11, 11)
# returns the Date object for the current date
# returns a DateTime object for the current instance in time
# returns date with Coordinated Universal Time (UTC) time zone
The output of the following code:
Formatting Of Dates
In order to format Dates, we need to refer the characters which represent/refer date elements. Here is a table for referring to what each character represents.
yyyy or yy
5 or 05
month full name
day of week
day of the week full
day in number
We can these formatting strings with functions such as DateTime(), Dates.format() and Date() The following examples will show various date formatting methods:
# formatting a string into a DateTime()
Dates.DateTime("Tue, 11 Jan 2001 12:10:4", "e, d u y H:M:S")
# Convert a string date to a d/m/yyyy format
Dates.Date("Mon, 12 Jan 2002", "e, d u y")
# getting current time
# using format() to format string into time
Dates.format(my_time, "e, dd u yyyy HH:MM:SS")
Sometimes we require leading zeros for single date element. This example shows how we can add leading zero.
my_time =Dates.DateTime("Mon, 1 Jun 2001 1:2:4", "e, d u y H:M:S")
# with leading zeros
Dates.format(my_time, "e: dd u yy, HH.MM.SS")
# without leading zero
Dates.format(my_time, "e: d u yy, H.M.S")
Also, we can convert a date string from one format to other by using DateTime() to convert into DateTime object and then use DateFormat() to display/output to a different format.
# date that needs to be formatted
date ="Mon, 12 Jul 2001 12:13:14"
# using DateTime() to obtain DateTime() obj.
temp =Dates.DateTime(date, "e, dd u yyyy HH:MM:SS")
# Using Dates.format()
Dates.format(temp, "dd, U, yyyy HH:MM, e")
When we have a lot of dates to handle we use a DateFormat object to handle an array of string dates
# defining general format for dates
We can also use Dates.ISODateTimeFormat which provides an ISO8601 format. The example is given below:
Getting Different Types of Time
For obtaining time in Julia we use Dates.Time() functionmostly. which follows the proleptic Gregorian calendar. The different types of time are as follows:
Dates.Time(Dates.now()) it returns a time in HH:MM:SS:ss and it takes Date object.
Dates.minute( t) it gives the minute of the Dates.Time object passed.
Dates.hour(t) it gives the hour of the Dates.Time object passed.
Dates.second(t) it gives the second of the Dates.Time object passed.
# creating a Dates object
# Provides the current time
# Provides the hour of date object
# Provides the second of date object
# Provides the minutes of date object
It is also referred to as UNIX time. It is used to deal with timekeeping. It is a count of the number of seconds that have elapsed since the beginning of the year 1970.
The time() function, when used without any arguments, returns the Unix/Epoch time value of the current second.
# provides unix time of current second
To convert UNIX time into more readable form we use strftime() (“string format time”) function.
# 1 year worth of UNIX time
The function unix2datetime() converts a UNIX time into date/time object.
# To convert from unix to date/time object
There are many other functions for manipulating date and time. Refer to the official documentation to learn more about different implementation.