java - sillones - sofas fama precios
¿Cómo encontrar el último lunes más reciente? (3)
Estoy usando ColdFusion 9.0.1.
Estoy creando un concurso todos los lunes a la medianoche. Necesito usar ColdFusion (pero estoy seguro de que la lógica es la misma para otros idiomas) para encontrar la fecha del lunes pasado más reciente. Una vez que determine esa fecha, incluiré esa fecha en una declaración SQL para obtener la clasificación actual y los resultados anteriores.
Entonces, ¿qué funciones necesito para encontrar el pasado lunes pasado?
RESPONDER
Dates = structNew();
Dates.CurrentDay = dateFormat(now(), "yyyy-mm-dd");
// LOOP MAX OF SEVEN TIMES
for (i = 1; i lte 7; i++) {
// IF CURRENT DAY OF WEEK IS MONDAY SET AND BREAK
if (dayOfWeek(Dates.CurrentDay) == 2) {
Dates.BikeOfTheWeekDate = Dates.CurrentDay;
break;
// IF CURRENT DAY OF WEEK IS NOT MONDAY SUBTRACT DAY
} else {
Dates.CurrentDay = dateAdd("d", -1, Dates.CurrentDay);
}
}
Pseudocódigo:
Get the current day
Loop
Check if it''s Monday
If yes, break out of the loop
Substract one
Next loop
En ColdFusion, sustraiga un día con DateAdd("d", -1, date)
y DayOfWeek(date)
lunes con DayOfWeek(date)
que devuelve 2 para el lunes.
También podría deducir el día actual de la semana de 2 (es decir, el lunes)
<!--- All days except Sunday (ie 2-Monday,...,7-Saturday) --->
<cfif dayOfWeek(currentDate) gt 1>
<cfset mostRecentMonday = dateAdd("d", 2-dayOfWeek(currentDate), currentDate)>
<cfelse>
<cfset mostRecentMonday = dateAdd("d", -6, currentDate)>
</cfif>
También puedes hacerlo usando la clase Java Calendar.
Que es lo que los métodos de fecha de ColdFusion usan internamente.
<cfscript>
var cal = createObject( ''java'', ''java.util.Calendar'' ).getInstance();
cal.setTime( now() );
// if the (7) day of week is before (2) monday, we want the previous week
// decrement the (3) week of year
if ( cal.get(7) < 2 ) {
cal.set( 3, cal.get(3) - 1 );
}
// set the (7) day of week back to (2) monday
cal.set( 7, 2 ); // 7 = day of week, 2 = monday
// reset time fields back to 0, aka midnight
cal.set( 11, 0 ); // 11 = hour of day
cal.set( 12, 0 ); // 12 = minute
cal.set( 13, 0 ); // 13 = second
cal.set( 14, 0 ); // 14 = millisecond
// get the last monday Date
var lastMonday = cal.getTime();
// cal.getTime() returns a java.util.Date
// if you want to convert the date to a ColdFusion OleDateTime, you can like so
var lastMonday = dateAdd( ''d'', 0, cal.getTime() );
// or like this
var lastMonday = createObject( ''java'', ''coldfusion.runtime.OleDateTime'' ).init( cal.getTime() );
<cfscript>
http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Calendar.html
http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Date.html