You need to sign in to do that
Don't have an account?
Siddharth Birari.ax1164
Identification of Datetime
Hi,
I have a datetime instance available with me.
I want to identify '3rd Thursday' for that Month which is represented by that datetime instance.
Just like '3rd Thursday', the combination can be any thing provided by the user,
say, "Last Saturday' Or '4th Monday' etc.
Please help
Thanks in advance
@Jia Hu: First of all thanks for the reply.
But, here your code gives me only 3rd Thu. As I mentioned, the query is dynamic and can be random combination say, 1st Sunday, 2nd Wednesday etc.
Although i was going through developing logic only and i came up with this.
This method takes four parameters. The first two parameters pMonth, and pYear determine the Month from which you need to pick the date. last two paramters take week Number and day number respectively.
public datetime dtResultant;
public datetime datetimeIdentifier(Integer pMonth, Integer pYear, Integer pWeek, Integer pDay){
if((pMonth >= 0 && pMonth <= 12 && pMonth != null) &&
(pYear != 0 && pYear != null) &&
(pWeek >= 0 && pWeek <= 5 && pWeek != null) &&
(pDay >= 0 && pDay <= 7 && pDay != null)){
dtResultant = datetime.newinstance(pYear, pMonth, 1);
dtResultant = dtResultant.date().toStartOfWeek();
if(dtResultant.month() < pMonth)
dtResultant = dtResultant + 7;
dtResultant = dtResultant.addDays(7 * (pWeek - 1)); //Calculation based on Week Number
if(dtResultant.month() > pMonth)
dtResultant = dtResultant - 7;
dtResultant = dtResultant.addDays((pDay - 1)); //Calculation based on Day Number
if((dtResultant.month() > pMonth) ||
(dtResultant.day() > 7 && pWeek == 1))
dtResultant = dtResultant - 7;
return dtResultant;
}
}
All Answers
Datetime dt = System.now();
If((dt.day() >= 15)&&(dt.day()<=21) && (dt.format('E') == 'Thu') ) {
System.debug('Today is 3rd Thursday ! ');
}
@Jia Hu: First of all thanks for the reply.
But, here your code gives me only 3rd Thu. As I mentioned, the query is dynamic and can be random combination say, 1st Sunday, 2nd Wednesday etc.
Although i was going through developing logic only and i came up with this.
This method takes four parameters. The first two parameters pMonth, and pYear determine the Month from which you need to pick the date. last two paramters take week Number and day number respectively.
public datetime dtResultant;
public datetime datetimeIdentifier(Integer pMonth, Integer pYear, Integer pWeek, Integer pDay){
if((pMonth >= 0 && pMonth <= 12 && pMonth != null) &&
(pYear != 0 && pYear != null) &&
(pWeek >= 0 && pWeek <= 5 && pWeek != null) &&
(pDay >= 0 && pDay <= 7 && pDay != null)){
dtResultant = datetime.newinstance(pYear, pMonth, 1);
dtResultant = dtResultant.date().toStartOfWeek();
if(dtResultant.month() < pMonth)
dtResultant = dtResultant + 7;
dtResultant = dtResultant.addDays(7 * (pWeek - 1)); //Calculation based on Week Number
if(dtResultant.month() > pMonth)
dtResultant = dtResultant - 7;
dtResultant = dtResultant.addDays((pDay - 1)); //Calculation based on Day Number
if((dtResultant.month() > pMonth) ||
(dtResultant.day() > 7 && pWeek == 1))
dtResultant = dtResultant - 7;
return dtResultant;
}
}