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

Bruce Bruen bbruen at ...2308...
Mon Oct 24 23:30:51 CEST 2011


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



More information about the User mailing list