Representing time and date in Pine Script can be problematic, especially for not-so-experienced developers. The output format for date/time may not make a lot of sense. As an illustration, let’s try to plot the date/time on your screen using the following code.
//@version=5 indicator("My Script") t = timestamp("01 Jan 2022 00:00") if barstate.islast label.new(bar_index, high, str.tostring(t))
You should get something like this:
This happens because date and time are represented in the Unix format (the amount of milliseconds passed from 01 Jan 1970).
Using Mathematical Operations to Add/Subtract Dates
Pine Script does not provide native functions to compute dates by simply adding or subtracting a certain amount of time. However, we can still accomplish that by using simple mathematical operations. The idea is to declare date/time values as integer data types so we can easily compute dates by adding or subtracting milliseconds.
→ Multiples Table
Here is a small table with a multiple you need to add for every date element:
|Date Element||Multiple of Milliseconds|
→ Sample Date/Time Operations
Here are some examples I created to demonstrate how you can use basic mathematical operations to compute dates (using milliseconds).
Add 1 day:
t2 = t1 + 86400000
Subtract 3 hours:
t3 = t1 – 3 * 3600000
Add 37 seconds:
t4 = t1 + 37 * 60000
Subtract 2 weeks:
t5 = t1 – 2 * 604800000