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 |
1 millisecond | 1 |
1 second | 1000 |
1 minute | 60000 |
1 hour | 3600000 |
1 day | 86400000 |
1 week | 604800000 |
→ 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
Follow me on TradingView and YouTube.