# Manipulating Dates

At Hablla, the **date handling** is essential for setting up automations, defining deadlines, and creating smart rules within the flow. You can set dates automatically using expressions inside fields, without needing to code.

### 🌍 Adjusting the Time Zone

The times used in automations follow the **UTC (Coordinated Universal Time) standard**. However, depending on where you are, it may be necessary to adjust that time.

✅ **Example for Brazil:**\
The **Brasília time zone** is UTC **-3**. To adjust any date to the correct time, simply subtract **3 hours** from the generated date.

***

### 🔹 How to Set Dates Dynamically?

In Hablla, we use **date expressions** inside **{{ }}** to calculate and set values automatically.

#### ✅ **Set Current Date** (with time zone adjustment)

If you want to set a field with the **date and time of the automation moment**, adjusting for Brasília (UTC -3), use:

```
{{new Date(Date.now() - 3 * 60 * 60 * 1000)}}  
```

📌 **Example:** If the execution occurs on **March 4, 2025 at 14:00 UTC**, the adjustment will show **"Tue Mar 04 2025 11:00:00 GMT-3"**.

***

#### ⏳ **Adding Time to the Current Date**

If you need to add minutes, hours, or days to the current date, just add the corresponding value to `Date.now()` and subtract the 3 hours for the time zone.

**➕ Add Minutes**

Each minute equals **60,000 milliseconds**. To add 20 minutes and adjust to UTC -3, we use:

```
{{new Date(Date.now() + 20 * 60 * 1000 - 3 * 60 * 60 * 1000)}}  
```

📌 **Usage Example:** Set the **Start Date** of a task to 20 minutes in the future.

***

**⏳ Add Hours**

Each hour equals **3,600,000 milliseconds**. To add **3 hours**, already considering the time zone, we use:

```
{{new Date(Date.now() + 3 * 60 * 60 * 1000 - 3 * 60 * 60 * 1000)}}  
```

📌 **Usage Example:** Set the **End Date** for 3 hours after the task start.

***

**📅 Add Days**

Each day has **86,400,000 milliseconds**. To add **2 days** and keep the time zone adjustment, we use:

```
{{new Date(Date.now() + 2 * 24 * 60 * 60 * 1000 - 3 * 60 * 60 * 1000)}}  
```

📌 **Usage Example:** Set a due date for 2 days after the task is created.

***

#### ⏰ **Set an Interval between Dates**

<figure><img src="https://1592162275-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrmxWrIrMauHcIrsuqfGq%2Fuploads%2FXbqwLzEZD3iAp4KsuWDl%2Fimage.png?alt=media&#x26;token=0f4edae3-ef0c-446c-a2a3-e77f1ab3f002" alt=""><figcaption><p>Configuration of a Hablla component to Create Task</p></figcaption></figure>

If you need to configure **Start Date and End Date**, you can use different expressions for each field.

🔹 **Start Date:** 20 minutes from the current moment (UTC -3):

```
{{new Date(Date.now() + 20 * 60 * 1000 - 3 * 60 * 60 * 1000)}}  
```

🔹 **End Date:** 40 minutes after task creation (UTC -3):

```
{{new Date(Date.now() + 40 * 60 * 1000 - 3 * 60 * 60 * 1000)}}  
```

📌 **Usage Example:** Create a task that starts in 20 minutes and ends in 40 minutes.

***

#### 🕑 **Subtract Time from the Current Date**

If you need to set a time **before the current moment**, just **subtract** values.

🔹 **Example: Set a time 1 hour ago (UTC -3):**

```
{{new Date(Date.now() - 1 * 60 * 60 * 1000 - 3 * 60 * 60 * 1000)}}  
```

📌 **Usage:** Create an event with a past date.

***

### 🎯 **Final Tips**

✅ **Always adjust the time zone** according to your location. Brazil uses UTC **-3**, but if it is another location, adjust as necessary.\
✅ **Multiply the values correctly** for minutes, hours and days.\
✅ **The generated dates follow the UTC format**, but can be converted by the system automatically.\
✅ **Testing before applying** helps avoid configuration errors.

🚀 **With these techniques, you can automate tasks and deadlines correctly, always respecting the local time!**
