Case to get date (GlideDateTime/GlideDate)

YM01
Tera Contributor

Hi.
I am planning to get the current date and compare it to the value of a date field. (If you want to compare dates without including time)

Are there any cases where using GlideDateTime is recommended over GlideDate?

If so,what is the reason? Could anyone please explain to me?

 

1 ACCEPTED SOLUTION

Akshay Gupta2
Kilo Sage

Hi @YM01 

 

In ServiceNow, both GlideDateTime and GlideDate are used for handling date and time values, but they serve different purposes and have distinct functionalities. Here’s a detailed explanation of when and why you should use `GlideDateTime` over `GlideDate`, along with a script to get the current time in ServiceNow:

 

GlideDateTime vs. GlideDate

 

1. GlideDateTime:
- **Purpose**: Handles both date and time components.
- **Use Case**: Use `GlideDateTime` when you need to work with both date and time values. This is particularly important for precise time comparisons, scheduling, and timestamp logging.
- **Precision**: Provides more precision as it includes both date and time up to milliseconds.
- **Methods**: Includes methods for manipulating both date and time, such as `addSeconds()`, `subtract()`, and `getDisplayValue()`.

2. **GlideDate**:
   - Purpose: Handles only the date component, without any time information.
   - Use Case: Use `GlideDate` when you only care about the date part and not the time. This can be useful for operations involving only dates, such as comparing birthdates, due dates, or any scenarios where the time of day is irrelevant.
- Precision: Limited to the date without any time component.
- Methods: Includes methods focused on date manipulation, such as `addDays()`, `subtract()`, and `getByFormat()`.

 

 Why Use GlideDateTime Over GlideDate?

 

- Precision: When you need to consider the exact time along with the date, `GlideDateTime` is essential. For example, when scheduling tasks or comparing timestamps, the time component can be crucial.
- Operations Involving Time: If your logic involves operations that require knowledge of hours, minutes, and seconds (e.g., calculating the difference in hours between two timestamps), `GlideDateTime` is necessary.
- **Time Zone Handling**: `GlideDateTime` can handle time zones, which is important for applications that are used across different time zones.

### Script to Get the Current Time in ServiceNow Using GlideDateTime

Here’s a script to get the current time and compare it to a value in a date field using `GlideDateTime`:

 

 

// Get the current time using GlideDateTime
var currentTime = new GlideDateTime();

// Log the current time
gs.info('Current Time: ' + currentTime);

// Assuming you have a date/time field in a record
var record = new GlideRecord('your_table_name'); // Replace 'your_table_name' with your actual table name
record.get('sys_id', 'your_record_sys_id'); // Replace 'your_record_sys_id' with the actual sys_id of the record

// Get the value of the date/time field
var dateTimeField = record.getValue('your_date_time_field'); // Replace 'your_date_time_field' with the actual field name
var dateTimeValue = new GlideDateTime(dateTimeField);

// Compare the current time with the field value
if (currentTime.after(dateTimeValue)) {
gs.info('Current time is after the date/time field value.');
} else if (currentTime.before(dateTimeValue)) {
gs.info('Current time is before the date/time field value.');
} else {
gs.info('Current time is equal to the date/time field value.');
}

 

 

 Summary

- Use `GlideDateTime` when you need to handle both date and time components with precision.
- Use `GlideDate` when you only need to handle dates without considering the time.
- `GlideDateTime` is recommended for operations involving exact time comparisons, scheduling, and scenarios where time precision is critical.

By using the appropriate class (`GlideDateTime` or `GlideDate`) based on your specific needs, you can ensure that your date and time manipulations in ServiceNow are both accurate and efficient.

 

Please mak as helpfull and give a thumbs up.

 

Thanks

Akshay

View solution in original post

2 REPLIES 2

Akshay Gupta2
Kilo Sage

Hi @YM01 

 

In ServiceNow, both GlideDateTime and GlideDate are used for handling date and time values, but they serve different purposes and have distinct functionalities. Here’s a detailed explanation of when and why you should use `GlideDateTime` over `GlideDate`, along with a script to get the current time in ServiceNow:

 

GlideDateTime vs. GlideDate

 

1. GlideDateTime:
- **Purpose**: Handles both date and time components.
- **Use Case**: Use `GlideDateTime` when you need to work with both date and time values. This is particularly important for precise time comparisons, scheduling, and timestamp logging.
- **Precision**: Provides more precision as it includes both date and time up to milliseconds.
- **Methods**: Includes methods for manipulating both date and time, such as `addSeconds()`, `subtract()`, and `getDisplayValue()`.

2. **GlideDate**:
   - Purpose: Handles only the date component, without any time information.
   - Use Case: Use `GlideDate` when you only care about the date part and not the time. This can be useful for operations involving only dates, such as comparing birthdates, due dates, or any scenarios where the time of day is irrelevant.
- Precision: Limited to the date without any time component.
- Methods: Includes methods focused on date manipulation, such as `addDays()`, `subtract()`, and `getByFormat()`.

 

 Why Use GlideDateTime Over GlideDate?

 

- Precision: When you need to consider the exact time along with the date, `GlideDateTime` is essential. For example, when scheduling tasks or comparing timestamps, the time component can be crucial.
- Operations Involving Time: If your logic involves operations that require knowledge of hours, minutes, and seconds (e.g., calculating the difference in hours between two timestamps), `GlideDateTime` is necessary.
- **Time Zone Handling**: `GlideDateTime` can handle time zones, which is important for applications that are used across different time zones.

### Script to Get the Current Time in ServiceNow Using GlideDateTime

Here’s a script to get the current time and compare it to a value in a date field using `GlideDateTime`:

 

 

// Get the current time using GlideDateTime
var currentTime = new GlideDateTime();

// Log the current time
gs.info('Current Time: ' + currentTime);

// Assuming you have a date/time field in a record
var record = new GlideRecord('your_table_name'); // Replace 'your_table_name' with your actual table name
record.get('sys_id', 'your_record_sys_id'); // Replace 'your_record_sys_id' with the actual sys_id of the record

// Get the value of the date/time field
var dateTimeField = record.getValue('your_date_time_field'); // Replace 'your_date_time_field' with the actual field name
var dateTimeValue = new GlideDateTime(dateTimeField);

// Compare the current time with the field value
if (currentTime.after(dateTimeValue)) {
gs.info('Current time is after the date/time field value.');
} else if (currentTime.before(dateTimeValue)) {
gs.info('Current time is before the date/time field value.');
} else {
gs.info('Current time is equal to the date/time field value.');
}

 

 

 Summary

- Use `GlideDateTime` when you need to handle both date and time components with precision.
- Use `GlideDate` when you only need to handle dates without considering the time.
- `GlideDateTime` is recommended for operations involving exact time comparisons, scheduling, and scenarios where time precision is critical.

By using the appropriate class (`GlideDateTime` or `GlideDate`) based on your specific needs, you can ensure that your date and time manipulations in ServiceNow are both accurate and efficient.

 

Please mak as helpfull and give a thumbs up.

 

Thanks

Akshay

Sandeep Rajput
Tera Patron
Tera Patron

@YM01 It all depends on your requirement, if you wish to use the date variable for a time critical information (e.g. triggering a report at a specific time on a given day/sending a notification on a specific time of the day) then GlideDateTime should be used. If the time related requirement is not there then GlideDate should be used in those case.