Jump to content
Fivewin Brasil

Forma de calcular a semana


Arthur Silvestre

Recommended Posts

Bom dia pessoa, faz muito tempo que não apareço por aqui, bom eu preciso de ajuda no seguinte caso:

Preciso calcular o Descanso Semanal Remunerado(DSR), o calculo é bem simples(Resultado da hora extra dividido pelo numero de dias trabalhado e multiplicado pelo numero de domingos).

O problema maior é como fazer o calculo dos dias, existe alguma função na qual eu veja o numero de dias de um mês? ou o numero de semanas, o numero de domingos, numero de sábados,etc. Para poder fazer um calculo automático, em ultimo caso posso incluir um get para a informação do numero de dias trabalhado e o numero de domingos do mês referente, mas caso essa função que acabo de mencionar exista a automação se tornaria mais completa sem muito esforço e redução de erros na medida que um usuário esteja fazendo a utilização do programa. Alguém pode me socorre?

FWH.11.12 + xHarbour12.1 + Pelles C IDE

E-mail:ArthurSilvestreSnt@hotmail.com

Link to comment
Share on other sites

Bom dia pessoa, faz muito tempo que não apareço por aqui, bom eu preciso de ajuda no seguinte caso:

Preciso calcular o Descanso Semanal Remunerado(DSR), o calculo é bem simples(Resultado da hora extra dividido pelo numero de dias trabalhado e multiplicado pelo numero de domingos).

O problema maior é como fazer o calculo dos dias, existe alguma função na qual eu veja o numero de dias de um mês? ou o numero de semanas, o numero de domingos, numero de sábados,etc. Para poder fazer um calculo automático, em ultimo caso posso incluir um get para a informação do numero de dias trabalhado e o numero de domingos do mês referente, mas caso essa função que acabo de mencionar exista a automação se tornaria mais completa sem muito esforço e redução de erros na medida que um usuário esteja fazendo a utilização do programa. Alguém pode me socorre?

FWH.11.12 + xHarbour12.1 + Pelles C IDE

E-mail:ArthurSilvestreSnt@hotmail.com

Link to comment
Share on other sites

Um destes tem que servir, rsss.

AddMonth() Adds or subtracts a number of months to/from a Date value.

BoM() Returns the date of the first day of a month.

BoQ() Returns the date of the first day of a quarter.

BoY() Returns the date of the first day of a year.

CDoW() Returns the name of a week day from a date.

CMonth() Returns the name of a month from a date.

CtoD() Converts a character string into a Date value

CtoDoW() Returns the number of a week day from its name.

CtoMonth() Returns the number of a month from its name.

CtoT() Converts a character string into a DateTime value

Date() Returns the current date from the operating system.

DateTime() Returns the current date and time from the operating system.

Day() Extracts the numeric day number from a Date value.

Days() Calculates the number of days from elapsed seconds.

DaysInMonth() Returns the number of days in a month.

DaysToMonth() Returns the number of days from first January to the beginning of a month.

DMY() Formats a date as "dd. Month yyyy"

DoW() Determines the numeric day of the week from a date.

DoY() Returns the day number of a Date value in a year.

DtoC() Converts a Date value to a character string in SET DATE format.

DtoS() Converts a Date value to a character string in YYYYMMDD format.

ElapTime() Calculates the time elapsed between a start and an end time.

EoM() Returns the date of the last day in a month.

EoQ() Returns the date of the last day in a quarter.

EoY() Returns the date for the last day of a year.

HB_Clocks2Secs() Calculates seconds from CPU ticks.

Hour() Extracts the hour from a DateTime value

IsLeap() Checks if a Date value belongs to a leap year.

LastDayoM() Returns the number of days in a month.

Max() Returns the larger value of two Numerics or Dates.

MDY() Formats a date as "Month dd, yy".

MilliSec() Defines a time delay in milliseconds.

Min() Returns the smallerr value of two Numerics or Dates.

Minute() Extracts the minute from a DateTime value

Month() Extracts the numeric month number from a Date value.

NtoCDoW() Converts a numeric week day to its name.

NtoCMonth() Converts a numeric month to its name.

Quarter() Returns the quarter a date belongs to.

Seconds() Returns the number of seconds elapsed since midnight

SecondsCpu() Returns the CPU time used by the current process.

Secs() Calculates the number of seconds from a time string.

SecToTime() Converts numeric seconds into a time formatted character string.

SetDate() Changes the system date from a Date value.

SetNewDate() Changes the system date from Numeric values.

SetNewTime() Changes the system time from Numeric values.

SetTime() Changes the system time from a Time string.

ShowTime() Displays the system time continuously at a specified screen position.

StoD() Converts a "yyyymmdd" formatted string to a Date value

StoT() Converts a "YYYYMMDDhhmmss.ccc" formatted string to a DateTime value

SX_DtoP() Converts a Date value into a 3-byte character string.

SX_PtoD() Unpacks a packed 3-byte date value.

Time() Retrieves the system time as a formatted character string.

TimeToSec() Calculates the number of seconds since midnight.

TimeValid() Checks if a character string is a valid time string.

TString() Converts numeric seconds into a time formatted character string.

TtoC() Converts a DateTime value to a character string in SET DATE and SET TIME format.

TtoS() Converts a Date value to a character string in YYYYMMDDhhmmss.ccc format.

WaitPeriod() Defines a wait period and allows for time controlled loops.

Week() Calculates the numeric calendar week from a date.

WoM() Calculates the week number in a month.

Year() Extracts the numeric year from a Date value

Leco

citação:

Bom dia pessoa, faz muito tempo que não apareço por aqui, bom eu preciso de ajuda no seguinte caso:

Preciso calcular o Descanso Semanal Remunerado(DSR), o calculo é bem simples(Resultado da hora extra dividido pelo numero de dias trabalhado e multiplicado pelo numero de domingos).

O problema maior é como fazer o calculo dos dias, existe alguma função na qual eu veja o numero de dias de um mês? ou o numero de semanas, o numero de domingos, numero de sábados,etc. Para poder fazer um calculo automático, em ultimo caso posso incluir um get para a informação do numero de dias trabalhado e o numero de domingos do mês referente, mas caso essa função que acabo de mencionar exista a automação se tornaria mais completa sem muito esforço e redução de erros na medida que um usuário esteja fazendo a utilização do programa. Alguém pode me socorre?

FWH.11.12 + xHarbour12.1 + Pelles C IDE

E-mail:ArthurSilvestreSnt@hotmail.com


id=quote>id=quote>

Five PPC

Harbour 1.0.1 - 1999-2008

Link to comment
Share on other sites

Algo assim?

http://br.answers.yahoo.com/question/index?qid=20061006142050AANDiyb

Interessante:

http://br.answers.yahoo.com/question/index?qid=20070215193430AALb7VJ

Abs,

João Santos - São Paulo.

joao@pleno.com.br

Fone: (11) 3106-2832 / 5150-7341 - TIM

https://www.facebook.com/kapiaba

FWH 2.7 - xHARBOUR WorkShop.Exe

Editado por - kapiaba on 21/11/2012 13:05:16

Link to comment
Share on other sites

Vammos la:

EoM(dData) => Retorna o ultimo dia do mes na data correspondente, ex:

dData := CtoD("01/01/2012")

EoM(dData) => 31/01/2012

Então pela funcao DAY vc poderá obter o numero de dias, agora pra fazer uma funcao que retorne os domingos do mes a maneira mais simples é essa:

Function nDomingos(dData1,dData2)

Local dData := CtoD("01/01/2012")

Local nDom := 0

While dData <= dData2

If Dow(dData)

nDom++

EndIf

nData++

EndDo

Return nDom

Somente recomendo usar essa funcao se voce não precisar de boa performance e se o periodo não exceder 60 dias. Sendo mais que isso será necessário fazer uns calculos matematicos para que o retorno seja rápido e independente de periodo, é um pouco mais complicado mas é possivel.

Espero que essa ja lhe resolva.

abraços

citação:

Bom dia pessoa, faz muito tempo que não apareço por aqui, bom eu preciso de ajuda no seguinte caso:

Preciso calcular o Descanso Semanal Remunerado(DSR), o calculo é bem simples(Resultado da hora extra dividido pelo numero de dias trabalhado e multiplicado pelo numero de domingos).

O problema maior é como fazer o calculo dos dias, existe alguma função na qual eu veja o numero de dias de um mês? ou o numero de semanas, o numero de domingos, numero de sábados,etc. Para poder fazer um calculo automático, em ultimo caso posso incluir um get para a informação do numero de dias trabalhado e o numero de domingos do mês referente, mas caso essa função que acabo de mencionar exista a automação se tornaria mais completa sem muito esforço e redução de erros na medida que um usuário esteja fazendo a utilização do programa. Alguém pode me socorre?

FWH.11.12 + xHarbour12.1 + Pelles C IDE

E-mail:ArthurSilvestreSnt@hotmail.com


id=quote>id=quote>

Eduardo Motta

emotta@gmail.com.br

FWH 9.09 (original) - xHARBOUR 1.2.1 (comercial e original) - SQLRDD

AJbJ

Link to comment
Share on other sites

citação:

Vammos la:

EoM(dData) => Retorna o ultimo dia do mes na data correspondente, ex:

dData := CtoD("01/01/2012")

EoM(dData) => 31/01/2012

Então pela funcao DAY vc poderá obter o numero de dias, agora pra fazer uma funcao que retorne os domingos do mes a maneira mais simples é essa:

Function nDomingos(dData1,dData2)

Local dData := CtoD("01/01/2012")

Local nDom := 0

While dData <= dData2

If Dow(dData)

nDom++

EndIf

nData++

EndDo

Return nDom

Somente recomendo usar essa funcao se voce não precisar de boa performance e se o periodo não exceder 60 dias. Sendo mais que isso será necessário fazer uns calculos matematicos para que o retorno seja rápido e independente de periodo, é um pouco mais complicado mas é possivel.

Espero que essa ja lhe resolva.

abraços

citação:

Bom dia pessoa, faz muito tempo que não apareço por aqui, bom eu preciso de ajuda no seguinte caso:

Preciso calcular o Descanso Semanal Remunerado(DSR), o calculo é bem simples(Resultado da hora extra dividido pelo numero de dias trabalhado e multiplicado pelo numero de domingos).

O problema maior é como fazer o calculo dos dias, existe alguma função na qual eu veja o numero de dias de um mês? ou o numero de semanas, o numero de domingos, numero de sábados,etc. Para poder fazer um calculo automático, em ultimo caso posso incluir um get para a informação do numero de dias trabalhado e o numero de domingos do mês referente, mas caso essa função que acabo de mencionar exista a automação se tornaria mais completa sem muito esforço e redução de erros na medida que um usuário esteja fazendo a utilização do programa. Alguém pode me socorre?

FWH.11.12 + xHarbour12.1 + Pelles C IDE

E-mail:ArthurSilvestreSnt@hotmail.com


id=quote>id=quote>

Eduardo Motta

emotta@gmail.com.br

FWH 9.09 (original) - xHARBOUR 1.2.1 (comercial e original) - SQLRDD

AJbJ


id=quote>id=quote>

Qual é a lib ou é uma função a parte a "EOM()" ?

Precisa de que ? pois o compilador não encontra a função.

FWH.11.12 + xHarbour12.1 + Pelles C IDE

E-mail:ArthurSilvestreSnt@hotmail.com

Link to comment
Share on other sites

Consegui pessoal

Eric mas o que eu queria era exatamente o ultimo dia do mês, a função ficou muito boa e pequena.


Function nDomingos()

dData:=(Date()-val(substr(dtoc(Date()),1,2)))+1

nDom:=0

dData2 := EoM(dData)

Do While dData <= dData2

if oemtoansi(cdow(ddata))="Domingo"

ndom++

endif

dData++

EndDo

Return

id=code>id=code>

FWH.11.12 + xHarbour12.1 + Pelles C IDE

E-mail:ArthurSilvestreSnt@hotmail.com

Editado por - arthursilvestre on 21/11/2012 16:39:45

Link to comment
Share on other sites

Legal que funcionou, mas como falei, fique atento com a performance. Se colocar grandes periodos ou tiver algum processo que execute essa funcao várias vezes pode perder performance.

Se acontecer isso da pra se desenvolver um algoritmo pra calcular os domingos de uma só vez, independente do periodo, mas ai precisa fazer isso que é possivel mas um pouco mais complexo que a funcao abaixo.

Se ela ja resolveu pra voce está ótimo.

abraço

citação:

Consegui pessoal

Eric mas o que eu queria era exatamente o ultimo dia do mês, a função ficou muito boa e pequena.


Function nDomingos()

dData:=(Date()-val(substr(dtoc(Date()),1,2)))+1

nDom:=0

dData2 := EoM(dData)

Do While dData <= dData2

if oemtoansi(cdow(ddata))="Domingo"

ndom++

endif

dData++

EndDo

Return

id=code>id=code>

FWH.11.12 + xHarbour12.1 + Pelles C IDE

E-mail:ArthurSilvestreSnt@hotmail.com

Editado por - arthursilvestre on 21/11/2012 16:39:45


id=quote>id=quote>

Eduardo Motta

emotta@gmail.com.br

FWH 9.09 (original) - xHARBOUR 1.2.1 (comercial e original) - SQLRDD

AJbJ

Link to comment
Share on other sites

citei a funcao EOM pois pela pergunta dela entendi que apesar de perguntar uma funcao que retorna o DIA ele realmente precisava da funcao que retornava a data. Tanto que no exemplo que coloquei deixei claro isso pra ele...

sobre essa função nao conhecia ainda, sempre usei o retorno da EOM buscando o DAY. Acho também que é mais facil lembrar assim, mas bom saber que tem uma que retorna automatico.

abraços

citação:

A função correta para retornar o "número" de dias do mês é LastDayoM.

EOM retorna a "data" do último dia do mês.

Estas funções estão na xHarbour\lib\ct.lib.

citação:

Qual é a lib ou é uma função a parte a "EOM()" ?

Precisa de que ? pois o compilador não encontra a função.

FWH.11.12 + xHarbour12.1 + Pelles C IDE

E-mail:ArthurSilvestreSnt@hotmail.com


id=quote>id=quote>


id=quote>id=quote>

Eduardo Motta

emotta@gmail.com.br

FWH 9.09 (original) - xHARBOUR 1.2.1 (comercial e original) - SQLRDD

AJbJ

Link to comment
Share on other sites

Muito obrigado Eduardo, por hora essa função resolve meus problema já que a unica coisa que preciso a instante é dizer quantos domingos existem no mês em que estou emitindo a rescisão para calcular o DSR(Descanso Semanal Remunerado), agradeço a todos o apoio.

abs

FWH.11.12 + xHarbour12.1 + Pelles C IDE

E-mail:ArthurSilvestreSnt@hotmail.com

Link to comment
Share on other sites

concordo com o Eric, o adequado é usar:

If Dow(dData)==1

ao invez de:

if oemtoansi(cdow(ddata))="Domingo"

citação:

Pois é, observe que você pediu uma coisa e queria outra, enfim...

A propósito, uma boa lógica não deve depender deste tipo de condição, use algo universal e basta uma função, pense mais um pouco se quiser. :D

Inadequado: if oemtoansi(cdow(ddata))="Domingo"

citação:

Eric mas o que eu queria era exatamente o ultimo dia do mês, a função ficou muito boa e pequena.

...

O problema maior é como fazer o calculo dos dias, existe alguma função na qual eu veja o numero de dias de um mês?...

id=red>


id=quote>id=quote>


id=quote>id=quote>

Eduardo Motta

emotta@gmail.com.br

FWH 9.09 (original) - xHARBOUR 1.2.1 (comercial e original) - SQLRDD

AJbJ

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...