Page 1 of 1

week of year and PureSMTP_SetXMailer to current domain name

Posted: Wed Jan 16, 2008 7:16 am
by alokdube
Guys working with databases and auto email alerts may find this useful

Here is a procedure which gives week number from date:

Code: Select all

Procedure WeekNumberFromDate()
Weeknum=1

For i=1 To DayOfYear(Date())

day_of_week=DayOfWeek(AddDate( Date(Year(Date()),01,01,1,1,1), #PB_Date_Day , i-1))

If (day_of_week=0) And Not(i=1)
Weeknum=Weeknum+1
;;PrintN ("day of week=0")
EndIf
;;PrintN ("Weeknum:"+Str(Weeknum))
Next i
ProcedureReturn Weeknum
EndProcedure
Here is another snippet to set the xmailer in the puresmtp library to the current domain name

it relys on the DNSAPIs at
http://www.purebasic.fr/english/viewtop ... highlight=

Code: Select all

LoadDnsApi(0) 
PureSMTP_SetContentType("text/html; charset=iso-8859-1")
ExamineIPAddresses()
;Debug IPString(NextIPAddress())
;Debug  ReverseDnsQuery(NextIPAddress())
PureSMTP_SetXMailer(ReverseDnsQuery(NextIPAddress()))
CloseLibrary(0)

Re: week of year and PureSMTP_SetXMailer to current domain n

Posted: Mon May 16, 2011 2:02 pm
by jesperbrannmark
I think it should start with
Weeknum=0
instead of
Weeknum=1

I don't know this, but here in Europe - a week start with monday and in US on sunday. I guess this also mean that the week number switch on sunday in US and on monday in europe.

Updated code: (not taking sunday/monday issue in count):

Code: Select all

Procedure WeekNumberFromDate(datum.i)
  Weeknum=0  
  For i=1 To DayOfYear(datum.i)    
    day_of_week=DayOfWeek(AddDate(Date(Year(datum.i),01,01,1,1,1), #PB_Date_Day , i-1))    
    If (day_of_week=0) And Not(i=1)
      Weeknum=Weeknum+1
    EndIf
  Next i
  ProcedureReturn Weeknum
EndProcedure
Debug WeekNumberFromDate(Date(1993,01,31,0,0,0))

Re: week of year and PureSMTP_SetXMailer to current domain n

Posted: Mon May 16, 2011 8:31 pm
by blueznl
That would depend on the country, in the Netherlands we consider Su Mo Tu We Th Fr Sa a week, so weeks here start on Sunday.

Re: week of year and PureSMTP_SetXMailer to current domain n

Posted: Tue May 17, 2011 7:07 am
by infratec

Code: Select all

Enumeration
  #Sunday
  #Monday
  #Tuesday
  #Wednesday
  #Thursday
  #Friday
  #Saturday
EndEnumeration

Procedure WeekNumberFromDate(datum.i, WeekStartDay = #Monday)
  Weeknum = 0 
  For i = 1 To DayOfYear(datum)
    day_of_week = DayOfWeek(AddDate(Date(Year(datum),01,01,1,1,1), #PB_Date_Day , i - 1))
    If day_of_week = WeekStartDay And i <> 1
      Weeknum + 1
    EndIf
  Next i
  ProcedureReturn Weeknum
EndProcedure

Debug WeekNumberFromDate(Date(2011,05,01,0,0,0))
Debug WeekNumberFromDate(Date(2011,05,01,0,0,0), #Sunday)
Satisfied :?:

Bernd

Re: week of year and PureSMTP_SetXMailer to current domain n

Posted: Tue May 17, 2011 8:07 am
by infratec
But it is still not 100% correct:

Code: Select all

Debug WeekNumberFromDate(Date(2009,01,01,0,0,0))
results in 0 :(

But it was week 1. (In germany and in USA)

Bernd