Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Jacarablues

Trabalhando com datas

Recommended Posts

Pessoal ;

 

Preciso criar um script onde a partir de uma data final e inicial ele me retorne o numero de semanas e a partir desse numero eu tenha uma lista com o dia inicial e final da semana (domingo - sabado).

 

Se a data inicial for no meio da semana , a primeira semana será desta data até o primeiro sábado.

 

Se a data final for no meio da semana, a ultima semana será do ultimo domingo até o esta data.

 

A principio o script q eu criei está legal, porem dependendo da data ele me retorna um numero total de semanas diferente do real.

 

Alguem poderia me dar alguma sugestão para eu fazer de uma forma mais simples ou mesmo acertar o q está pronto ??

 

Segue o script :

 

<%data_final = "07/12/2005"data_inicial = "09/06/2005"response.write data_inicial & " - " & data_finalresponse.write "<br><br>"dia_semana = DatePart("w", data_inicial)total = datediff("w", data_inicial, data_final) + 2response.write "total de semanas = " & total & "<br><br>"  if dia_semana = 7 then response.write "Semana 1 - " & data_inicial & "<br>" x = 1  else if dia_semana < 7 then  a = 7 - dia_semana  fdi = DateAdd("d", a, data_inicial)  response.write "Semana 1 - " & data_inicial & " - " & fdi & "<br>"  x = a + 1  end if end ifsegunda = DateAdd("d", x, data_inicial)segunda_final = DateAdd("d", 6, segunda)response.write "Semana 2 - " & segunda & " - " & segunda_final & "<br>"for i = 3 to totalsemana = iif semana = total thensemana_final_fim = DatePart("w", data_final)q = (semana_final_fim - 1) * -1semana_final_inicio = DateAdd("d", q, data_final)response.write "Semana " & total & " - "& semana_final_inicio & " - " & data_final &"<br>" elsef = semana - 2fs = DateAdd("ww", f, segunda)ff = DateAdd("d", 6, fs)response.write "Semana " & semana & "-" & fs & " - " & ff & "<br>"end ifnext%>

ps. isso ainda é só um rascunho

 

[]´s

Compartilhar este post


Link para o post
Compartilhar em outros sites

data_final = "07/12/2005"data_inicial = "09/06/2005"Semanas = DateDiff("ww", data_final , data_inicial ) depois voce só faz os ajustes...somando um ou subtraindo um dependendo do dia da semana que data_final e data_inicial se encontram

Compartilhar este post


Link para o post
Compartilhar em outros sites

data_final = "07/12/2005"data_inicial = "09/06/2005"Semanas = DateDiff("ww", data_final , data_inicial ) depois voce só faz os ajustes...somando um ou subtraindo um dependendo do dia da semana que data_final e data_inicial se encontram

Se você analisar bem o meu código foi isso q fiz..... só q tem um bug q não estou entendendo.....Esta data inicial q coloquei o script funfa..... Se você mandar retornar o dia da semana verá q é uma quinta.... porem se eu colocar a data inicial, 08/06/2005 , que é uma quarta.... ele aumenta uma semana na contagem final....Isso q não entendo.....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Descrição, em inglês, do DateDiff

Returns the number of intervals between two dates.

DateDiff(interval, date1, date2 [,firstdayofweek[, firstweekofyear]])

The DateDiff function syntax has these parts:

Arguments

interval

Required. String expression that is the interval you want to use to calculate the differences between date1 and date2. See Settings section for values.

date1, date2

Required. Date expressions. Two dates you want to use in the calculation.

firstdayofweek

Optional. Constant that specifies the day of the week. If not specified, Sunday is assumed. See Settings section for values.

firstweekofyear

Optional. Constant that specifies the first week of the year. If not specified, the first week is assumed to be the week in which January 1 occurs. See Settings section for values.

Settings

The interval argument can have the following values:

Setting - Description

yyyy - Year

q - Quarter

m - Month

y - Day of year

d - Day

w - Weekday

ww - Week of year

h - Hour

n - Minute

s - Second

The firstdayofweek argument can have the following values:

Constant - Value - Description

vbUseSystemDayOfWeek - 0 - Use National Language Support (NLS) API setting.

vbSunday - 1 - Sunday (default)

vbMonday - 2 - Monday

vbTuesday - 3 - Tuesday

vbWednesday - 4 - Wednesday

vbThursday - 5 - Thursday

vbFriday - 6 - Friday

vbSaturday - 7 - Saturday

The firstweekofyear argument can have the following values:

Constant - Value - Description

vbUseSystem - 0 - Use National Language Support (NLS) API setting.

vbFirstJan1 - 1 - Start with the week in which January 1 occurs (default).

vbFirstFourDays - 2 - Start with the week that has at least four days in the new year.

vbFirstFullWeek - 3 - Start with the first full week of the new year.

Remarks

You can use the DateDiff function to determine how many specified time intervals exist between two dates. For example, you might use DateDiff to calculate the number of days between two dates, or the number of weeks between today and the end of the year.

 

To calculate the number of days between date1 and date2, you can use either Day of year ("y") or Day ("d"). When interval is Weekday ("w"), DateDiff returns the number of weeks between the two dates. If date1 falls on a Monday, DateDiff counts the number of Mondays until date2. It counts date2 but not date1. If interval is Week ("ww"), however, the DateDiff function returns the number of calendar weeks between the two dates. It counts the number of Sundays between date1 and date2. DateDiff counts date2 if it falls on a Sunday; but it doesn't count date1, even if it does fall on a Sunday.

 

If date1 refers to a later point in time than date2, the DateDiff function returns a negative number.

 

The firstdayofweek argument affects calculations that use the "w" and "ww" interval symbols.

 

If date1 or date2 is a date literal, the specified year becomes a permanent part of that date. However, if date1 or date2 is enclosed in quotation marks (" ") and you omit the year, the current year is inserted in your code each time the date1 or date2 expression is evaluated. This makes it possible to write code that can be used in different years.

 

When comparing December 31 to January 1 of the immediately succeeding year, DateDiff for Year ("yyyy") returns 1 even though only a day has elapsed.

Numa tradução livre, usando o "w" como parâmetro ele vai contar as ocorrências do Dia da Semana do valor1 passado entre valor1 e valor2. Usando o "ww" ele vai usar como base o Domingo para contar entre eles.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Alô mestre Salgado ;

 

Valeu pela documentação. Script arrumado e funfando.

 

Segue o resultado se alguém precisar algum dia.

 

<%data_inicial = "04/06/2005"data_final = "07/12/2005"response.write data_inicial & " - " & data_finalresponse.write "<br><br>"dia_semana = DatePart("w", data_inicial)total = datediff("ww", data_inicial, data_final) + 1response.write "total de semanas = " & total & "<br><br>"		if dia_semana = 7 then	response.write "Semana 1 - " & data_inicial & "<br>"	x = 1		else if dia_semana < 7 then		a = 7 - dia_semana		fdi = DateAdd("d", a, data_inicial)		response.write "Semana 1 - " & data_inicial & " - " & fdi & "<br>"		x = a + 1		end if	end ifsegunda = DateAdd("d", x, data_inicial)segunda_final = DateAdd("d", 6, segunda)response.write "Semana 2 - " & segunda & " - " & segunda_final & "<br>"for i = 3 to totalsemana = iif semana = total thensemana_final_fim = DatePart("w", data_final)q = (semana_final_fim - 1) * -1semana_final_inicio = DateAdd("d", q, data_final)response.write "Semana " & total & " - "& semana_final_inicio & " - " & data_final &"<br>" elsef = semana - 2fs = DateAdd("ww", f, segunda)ff = DateAdd("d", 6, fs)response.write "Semana " & semana & "-" & fs & " - " & ff & "<br>"end ifnext%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.