F.x. imagine you have code like this and you have german or any another locale on user's PC.
Set dt = New NotesDateTime("")
Call dt.SetNow
msgbox Format$(dt.LSLocalTime, "dddd, dd. MMMM yyyy")
Out would be
Tuesday, 22. December 2015
But what if you want output in german i.e.?
22. Dezember 2015
In such case you may want to use LS2J approach to display it properly to user
Below you will find a solution that either allow to set locale or use default locale.
Option Public
Option Declare
UseLSX "*javacon"
Sub Initialize
On Error GoTo errhandler
Dim jSession As New JavaSession
Dim jCalendarClass As Javaclass, jLocaleClass As JavaClass, jSimpleDateFormatClass As JavaClass
Dim jCalendar As Javaobject, jLocale As Javaobject, jSDF As JavaObject, jDate As Javaobject
Dim jError As JavaError
Dim dt As New NotesDateTime("")
Call dt.SetNow
'in order to initiate date - we have to use Calendar object
Set jCalendarClass = jSession.GetClass("java.util.Calendar")
Set jCalendar = jCalendarClass.getInstance()
Call jCalendar.set(Year(dt.DateOnly), month(dt.DateOnly) - 1, day(dt.DateOnly))
'initialize date object
Set jDate = jCalendar.getTime()
'IMPORTANT
'create locale (here we specify langauge/country code)
Set jLocaleClass = jSession.GetClass("java.util.Locale")
Set jLocale = jLocaleClass.CreateObject("(Ljava/lang/String;Ljava/lang/String;)V", "de", "DE")
'also you can use local settings, if you need that - enable line below
'Set jLocale = jLocaleClass.getDefault()
'output format
Set jSimpleDateFormatClass = jSession.GetClass("java.text.SimpleDateFormat")
Set jSDF = jSimpleDateFormatClass.CreateObject("(Ljava/lang/String;Ljava/util/Locale;)V", "dd. MMMM yyyy", jLocale)
'result
MsgBox jSDF.format(jDate)
done:
Exit Sub
errhandler:
Set jError = jSession.GetLastJavaError()
MsgBox "JavaError was " & jError.errorMsg
jSession.ClearJavaError
Resume done
End Sub
Related topics:
Locale settings for date and time in IBM Domino and Notes
No comments :
Post a Comment