How to get first and last date of year in script

divyalakshmi
Tera Guru

Hi, 

 

I have a requirement to automatically fill start date field as Jan 1st current year and end date as Dec 31st current year during creation of a record in one of the scoped table. The record in the table will be created through scheduled job.. Can someone guide me for the server side script? Note job would run every year begging to create a record with current year first date as start date and current year last date as end date

 

 

Regards, 

Divya

1 ACCEPTED SOLUTION

Ashutosh C J
Tera Guru

Hi @divyalakshmi 
Please check these 2 methods . In this example I've used starting and ending times of the year and the date tiime formatting is yyyy-mm-dd hh:mm:ss.
Please look for date/time formatting as well if you are using the scripting method

 

//Method 1 - Can be typically used in Global Scope

var presentYear = new GlideDateTime().getYear();
var yearStart = new GlideDateTime(presentYear + '-01-01 00:00:00');
var yearEnd = new GlideDateTime(presentYear + '-12-31 23:59:59');

//Method 2 -  This one involves more scripting but can be used in any scope.

var presentDateTime = new GlideDateTime().getValue();
var presentDate = presentDateTime.split(' ')[0];

var presentDateArr =  presentDate.split('-');
var elementstr;
var presentYear;
for(i in presentDateArr){
	elementstr = presentDateArr[i]+'';
	if (elementstr.length == 4)	
		presentYear = presentDateArr[i];
}

var yearStart = new GlideDateTime(presentYear + '-01-01 00:00:00');
var yearEnd = new GlideDateTime(presentYear + '-12-31 23:59:59');

 

 

View solution in original post

3 REPLIES 3

Community Alums
Not applicable

Hi @divyalakshmi ,

I tried your problem in my PDI and I got the solution for this please take reference from below 

Create Before Business Rule and add below code 

(function executeRule(current, previous /*null when async*/) {

	// Add your code here
	current.end_date = new GlideDateTime('2024-12-31 12:00:00');
	current.start_date = new GlideDateTime('2024-01-01 12:00:00');

})(current, previous);

SarthakKashya2_0-1714153399765.png

Note: You can use any table and give the backend value of start and end date 

 

Result : 

I created new record and start and end date already filled 

SarthakKashya2_1-1714153450448.png

 

Please mark my answer correct and helpful if this works for you

 

Thanks and Regards 

Sarthak

Hi @Community Alums  unfortunately I will not know the year.. My job will run yearly once to create a one record for whole year and it should identify the year.. Eg: my schedule job will run on 2024 31st  December and create a record with start date as jan 1st 2025 and end date as dec 31 2025 and similarly job will run on dec 31 2025 to create record for 2026 as start and end date as jan 1 2026 and dec 31 2026..

Ashutosh C J
Tera Guru

Hi @divyalakshmi 
Please check these 2 methods . In this example I've used starting and ending times of the year and the date tiime formatting is yyyy-mm-dd hh:mm:ss.
Please look for date/time formatting as well if you are using the scripting method

 

//Method 1 - Can be typically used in Global Scope

var presentYear = new GlideDateTime().getYear();
var yearStart = new GlideDateTime(presentYear + '-01-01 00:00:00');
var yearEnd = new GlideDateTime(presentYear + '-12-31 23:59:59');

//Method 2 -  This one involves more scripting but can be used in any scope.

var presentDateTime = new GlideDateTime().getValue();
var presentDate = presentDateTime.split(' ')[0];

var presentDateArr =  presentDate.split('-');
var elementstr;
var presentYear;
for(i in presentDateArr){
	elementstr = presentDateArr[i]+'';
	if (elementstr.length == 4)	
		presentYear = presentDateArr[i];
}

var yearStart = new GlideDateTime(presentYear + '-01-01 00:00:00');
var yearEnd = new GlideDateTime(presentYear + '-12-31 23:59:59');