[Gambas-user] User timezone - could I ask a favour?

Johny Provoost johny.provoost at ...27...
Tue Oct 25 12:06:34 CEST 2011


Op 24-10-11 23:30, Bruce Bruen schreef:
> Hi all,
>
> According to my web research the module below is the "best" way to
> obtain the user's timezone name (or "Olson name" if you prefer).  This
> is because distros implement timezoning in different ways.
>
> It works fine for me using using the test harnesses I can devise for my
> (non-standard) distro.  I was hoping that some of you would run it on
> your distro and report that it works OK.  It should just print your
> timezone name like "Arctic/Longyearbyen"
>
> Thanks in advance.
> Bruce
>
> ' Gambas module file
>
> Public Sub main()
>
>    Print GetUserTimezone()
>
> End
>
> Private Function GetUserTimezone() As String
>
>    Dim tzetc As String   ' Used to determine the type of
> the /etc/localtime file
>    Dim tzmd5 As String   ' The md5 sum for the /etc/localtime file
>    Dim rtnval As String  ' Manipulated substring of tzraw that is finally
> returned
>
>    rtnval = Replace(Application.Env["TZ"], "/usr/share/zoneinfo/", "")
>
>    If Not rtnval Then
>      Shell "file /etc/localtime" To tzetc
>      If tzetc Like "* symbolic link to *" Then
>        rtnval = Mid(tzetc, InStr(tzetc, "`") + 1, -2)
>        rtnval = Replace(rtnval, "/usr/share/zoneinfo/", "")
>      Endif
>    Endif
>
>    If Not rtnval Then
>      Shell "md5sum /etc/localtime" To tzmd5
>      tzmd5 = Left(tzmd5, InStr(tzmd5, " ") - 1)
>      Shell Subst("find /usr/share/zoneinfo -type f | xargs md5sum | grep
> &1", tzmd5) To rtnval
>      rtnval = Left(rtnval, InStr(rtnval, "\n") - 1)
>      rtnval = Mid(rtnval, InStr(rtnval, "info/") + 5)
>    Endif
>
>    Return Replace(rtnval, "posix/", "")
>
> End
>

OK, I get Europe/Brussels and that's correct
Gambas 2.21
Ubuntu 11.04 with gnome2

Greetings,
Johny Provoost




More information about the User mailing list