Open In App

Working with Date and Time in Julia

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

For Example:






# import Dates module
import Dates
  
# 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
d = Dates.Date(2001)
  
# 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
d = Dates.today()
  
# returns a DateTime object for the current instance in time
d = Dates.now()
  
# returns date with Coordinated Universal Time (UTC) time zone
d = Dates.now(Dates.UTC) 

The output of the following code:

Different_types_of_dates

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.

Code Reference Format Example
y year digit yyyy or yy 2013
m month digit m 5 or 05
u month name u Feb
U month full name U February
e day of week e Mon
E day of the week full  E Monday
d day in number d 1
H hour digit HH 11
M minute digit MM 22
S second digit S 00
s millisecond digit s .001

We can  these formatting strings with functions such as DateTime(), Dates.format() and Date() The following examples will show various date formatting methods:




import Dates
  
# formatting a string into a DateTime() 
Dates.DateTime("Tue, 11 Jan 2001 12:10:4", "e, d u y H:M:S")

DateTime example




import Dates
  
# Convert a string date to a d/m/yyyy format
Dates.Date("Mon, 12 Jan 2002", "e, d u y")

Date_Example




import Dates
  
# getting current time
my_time = Dates.now()    
  
# using format() to format string into time
Dates.format(my_time, "e, dd u yyyy HH:MM:SS")

format_example




import Dates
  
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")

 
 

leading_zero_example




import Dates
  
# 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")

one_form_to_another




import Dates
  
# defining general format for dates
dateformat = Dates.DateFormat("y-m-d");
  
Dates.Date.([  
      "2001-11-01"
      "2002-12-12"
      "2003-02-6"
      "2004-04-7"
      "2005-12-9"
      "2006-11-12"
      ], dateformat)
  

array_of_dates




import Dates
  
# ISODateTimeFormat
Dates.Date.([  
      "2001-11-01"
      "2002-12-12"
      "2003-02-6"
      "2004-04-7"
      "2005-12-9"
      "2006-11-12"
      ], Dates.ISODateTimeFormat)

ISOFORMAT_format_example

Getting Different Types of Time

For obtaining time in Julia we use Dates.Time() function mostly. which follows the proleptic Gregorian calendar. The different types of time are as follows:




import Dates
  
# creating a Dates object
t = Dates.now()
  
# Provides the current time
Dates.Time(t)
  
# Provides the hour of date object
Dates.hour(t)
  
# Provides the second of date object
Dates.second(t)
  
# Provides the minutes of date object
Dates.minute(t)

time_module_example

Epoch Time

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. 




# provides unix time of current second
time()

time()_output




# 1 year worth of UNIX time
Libc.strftime(86400 * 365.25 * 1)

strftime() example




import Dates
  
# To convert from unix to date/time object
Dates.unix2datetime(time())

unix2datetime() example

There are many other functions for manipulating date and time. Refer to the official documentation to learn more about different implementation.


Article Tags :