Arthur Silvestre Posted November 21, 2012 Report Share Posted November 21, 2012 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 Quote Link to comment Share on other sites More sharing options...
Arthur Silvestre Posted November 21, 2012 Author Report Share Posted November 21, 2012 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 Quote Link to comment Share on other sites More sharing options...
lecojales Posted November 21, 2012 Report Share Posted November 21, 2012 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 Quote Link to comment Share on other sites More sharing options...
kapiaba Posted November 21, 2012 Report Share Posted November 21, 2012 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 Quote Link to comment Share on other sites More sharing options...
emotta Posted November 21, 2012 Report Share Posted November 21, 2012 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 Quote Link to comment Share on other sites More sharing options...
Arthur Silvestre Posted November 21, 2012 Author Report Share Posted November 21, 2012 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 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 Quote Link to comment Share on other sites More sharing options...
Arthur Silvestre Posted November 21, 2012 Author Report Share Posted November 21, 2012 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 Quote Link to comment Share on other sites More sharing options...
emotta Posted November 21, 2012 Report Share Posted November 21, 2012 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 Quote Link to comment Share on other sites More sharing options...
emotta Posted November 21, 2012 Report Share Posted November 21, 2012 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 Quote Link to comment Share on other sites More sharing options...
Arthur Silvestre Posted November 21, 2012 Author Report Share Posted November 21, 2012 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 Quote Link to comment Share on other sites More sharing options...
emotta Posted November 21, 2012 Report Share Posted November 21, 2012 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. 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 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.