Home › Forums › General discussion › Setting field value rule for Date/Time field tyoe
- This topic has 7 replies, 3 voices, and was last updated 5 years, 5 months ago by Maciek Grischke.
-
AuthorPosts
-
-
April 9, 2019 at 22:04 #24752
Hi Alexander,
In DFFS, I have a rule that’s using the [today] value to populate a date/time column upon form load. I have been able to add days to that value (ex: [today]+3) to return the value 3 days from today, but I have not been able to figure out how to set the value with [today] plus 4 hours, for example. I’ve tried everything I can think of and have researched solution upon solution, but have been able to figure it out.
Do you have any ideas on how I could set this up?
Thank you
-
April 10, 2019 at 15:24 #24754
Hi,
Unfortunately the Set field value function in the rule cannot set the time part so you must use some Custom JS. Just add this function to your Custom JS:function setDateColPlus4Hours(){ var dateVal = new Date(); dateVal.setHours(dateVal.getHours() + 4); spjs.utility.setDateFieldFromDateObject("DateColumnName",dateVal,0); }
Change DateColumnName to match your field name and insert the function name setDateColPlus4Hours in the Run these functions / trigger these rules field in your rule.
Alexander
-
June 5, 2019 at 13:50 #25593
Hi Alexander,
How can I use the above to set dates from an existing date field?
I have 4 date fields and here’s what I want to do. Select shift start and end manually:
Day:
StartDate: 01/06/2019 7:30
EndDate: 01/06/2019 22:00and then if option “night” is selected, fill in the following dates automatically:
Night:
NightStartDate 01/06/2019 22:00
NightEndDate 02/06/2019 7:30 (next day) -
June 5, 2019 at 17:49 #25598
Try it like this to set the dayshift:
function setDayShift(){ var dateVal = new Date(); // Start dateVal.setHours(7,30,0); spjs.utility.setDateFieldFromDateObject("DateColumn1",dateVal,0); // End dateVal.setHours(22,0,0); spjs.utility.setDateFieldFromDateObject("DateColumn2",dateVal,0); } setDayShift();
and this to set the nightshift:
function setNightShift(){ var dateVal = new Date(); // Start dateVal.setHours(22,0,0); spjs.utility.setDateFieldFromDateObject("DateColumn1",dateVal,0); // End dateVal.setHours(7,30,0); dateVal.setDate(dateVal.getDate()+1); spjs.utility.setDateFieldFromDateObject("DateColumn2",dateVal,0); } setNightShift();
Change DateColumn1 and DateColumn2 to match your field names.
Alexander
-
June 5, 2019 at 19:15 #25600
Hi Alexander,
The day and night shifts are different for different people.
7:30/22:00 was just an example.
What I meant was, if the employee selects a ‘time in’ 9:00 and ‘time out’ 20:00 for a day shift, the same time (in this case 20:00-9:00) is copied to the night shift (if “night” option is set to “yes”) to make it easier for users.
Please note, the second date for the night shift would be +1 day.
-
June 5, 2019 at 21:03 #25604
I got this working:
//get Day End Date and Time function getEndDate() { var endDate = getFieldValue("EndDate"); var endDate2 = endDate.split("/"); var endDate3 = endDate2[1] + "/" + endDate2[0] + "/" +endDate2[2]; var MyEndDate = endDate3.split(" "); var Time = MyEndDate[1]; var MyEndDate2 = MyEndDate[0]; var MyEndDate3 = MyEndDate2.split("/"); var MyEndDate4 = MyEndDate3[2]+"-"+MyEndDate3[0]+"-"+MyEndDate3[1]+"T"+Time+"Z"; var MyEndDate5 = new Date(MyEndDate4); MyEndDate5.setHours(MyEndDate5.getHours() - 1); spjs.utility.setDateFieldFromDateObject("SleepStart",MyEndDate5,0); // alert(MyDate5); } //get Day Start Date and Time function getStartDate() { var startDate = getFieldValue("StartDate"); var startDate2 = startDate.split("/"); var startDate3 = startDate2[1] + "/" + startDate2[0] + "/" +startDate2[2]; var MyStartDate = startDate3.split(" "); var Time = MyStartDate[1]; var MyStartDate2 = MyStartDate[0]; var MyStartDate3 = MyStartDate2.split("/"); var MyStartDate4 = MyStartDate3[2]+"-"+MyStartDate3[0]+"-"+MyStartDate3[1]+"T"+Time+"Z"; var MyStartDate5 = new Date(MyStartDate4); MyStartDate5.setHours(MyStartDate5.getHours() - 1); spjs.utility.setDateFieldFromDateObject("SleepEnd",MyStartDate5,1); // alert(MyDate5); }
I probably don’t need all of the date/time conversion.
What do you think? 🙂 -
June 6, 2019 at 18:22 #25615
I don’t really understand what you are doing here, but you can use this to get the date value as a date object directly to avoid all the steps to get a proper date object:
var startDate = spjs.utility.getDateFieldAsDateObject("EndDate");
Alexander
-
June 6, 2019 at 19:35 #25619
I couldn’t get the date format “01/06/2019 11:00” to do what I wanted it to do hence all the extra steps.
Thanks for the one line solution 😛
-
-
AuthorPosts
- You must be logged in to reply to this topic.