0

この質問は、 datetime.tostring 月と日の言語の LOTUSCRIPT バージョン です。

説明が必要 : dd/mmm/yyyy 形式の文字列の日付が必要です (例: "28 feb 2014")。この 3 文字に英語 (intl) を使用したくありません。LOCAL クライアントで使用されているデフォルトの地域設定も必要ありません。

制約:

  1. 使用するプログラム言語: Lotus Notes のクライアント側の Lotusscript。
  2. クライアント コンピューターの地域設定を変更できません。Lotus Notes レジストリに固有のものをかろうじて受け入れるのは苦痛です (例: http://searchdomino.techtarget.com/tip/Resolve-Domino-date-format-problems-for-dd-mm-yyyy-format )

format$ では問題は解決しないと思います。何を使用できますか? 私の最後の手段は select case month(now) case 1: resu = resu + "jan " ....

より良いアイデアはありますか?このような「deja vu」トピックを前もってありがとう。

[私は以前に「私は英語がしたくない」と書いたのを編集しました。LS の形式は常に英語を返します]

4

3 に答える 3

2

これで月が英語で表示されると思いますがFormat(Now, "dd mmm yyyy")、100% 確実ではありません。

そうでない場合は、使用できます

Day(Now) & " " & Mid("JanFebMarAprMayJulJunAugSepOctNovDec", 3* Month(Now) -2, 3) & " " & Year(Now)

于 2014-06-12T13:29:41.563 に答える
2

Windows を使用している場合は、WinApiGetDateFormat関数を使用できます。この関数では、SYSTEMTIME構造を作成する必要があります。また、日付と時刻の言語と形式を設定するにはLanguage Identifier Constants and Strings、トピックを使用する必要があります。 次に例を示します。Day, Month, Year, and Era Format Pictures

'Declarations
Type SYSTEMTIME
    wYear As Integer
    wMonth As Integer
    wDayOfWeek As Integer
    wDay As Integer
    wHour As Integer
    wMinute As Integer
    wSecond As Integer
    wMilliseconds As Integer
End Type

Declare Function GetDateFormat Lib "kernel32" Alias "GetDateFormatA" (_
Byval Locale As Long,_
Byval dwFlags As Long,_
lpDate As SYSTEMTIME,_
Byval lpFormat As String,_
Byval lpDateStr As String,_
Byval cchDate As Long) As Long

Function FormatDate(value As Variant, locale As Long, formatString As String) As String

    Dim buffer As String, systemTime As SYSTEMTIME

    systemTime.wYear = Year(value)
    systemTime.wMonth = Month(value)
    systemTime.wDay = Day(value)

    buffer = String(255, 0)

    GetDateFormat locale&, 0, systemTime, formatString$ , buffer, Len(buffer)

    FormatDate$ = Left$(buffer, Instr(1, buffer, Chr$(0)) - 1)

End Function

'Usage
MessageBox FormatDate(Now, &h40c, "dd MMM yyyy")
'&h40c - is fr-FR locale (0x040c)


別の方法は、LS2J を使用することです。SimpleDateFormatこれには、クラスとそのformatメソッドを使用できます。また、言語と日付を設定するにはLocale、クラスとクラスを使用する必要があります。 次に例を示します。Calendar

'Declarations
Uselsx "*javacon"'Include this for using Java objects in LotusScript

Function FormatDate(value As Variant, language As String, country As String, formatString As String) As String

    Dim javaSession As New JavaSession

    Dim localeClass As JavaClass
    Dim locale As JavaObject

    Dim calendarClass As JavaClass
    Dim calendar As JavaObject

    Dim dateFormatClass As JavaClass
    Dim dateFormat As JavaObject

    Set localeClass = javaSession.GetClass("java/util/Locale")
    Set locale = localeClass.CreateObject("(Ljava/lang/String;Ljava/lang/String;)V", language$, country$)

    Set calendarClass = javaSession.GetClass("java/util/Calendar")
    Set calendar = calendarClass.GetMethod("getInstance", "()Ljava/util/Calendar;").Invoke()
    'You need to subtract 1 from month value
    Call calendar.set(Year(value), Month(value) - 1, Day(value))

    Set dateFormatClass = javaSession.GetClass("java/text/SimpleDateFormat")
    Set dateFormat = dateFormatClass.CreateObject("(Ljava/lang/String;Ljava/util/Locale;)V", formatString$, locale)

    FormatDate$ = dateFormat.format(calendar.getTime())

End Function

'Usage
MessageBox FormatDate(Now, "fr", "FR", "dd MMM yyyy")

この例では、オブジェクトを取得するためにこのコンストラクターを使用しました。Locale言語コードはこちらから、国コードはこちらから取得できます。オブジェクトには、このコンストラクターを使用
しましたSimpleDateFormat

于 2014-06-13T08:13:41.557 に答える
1

独自の関数で日付文字列を手動で作成するよりも良い方法はありません。

Function FormatDate(sourceDate as Variant) As String

    Dim months[1 to 12] as String
    months[1] = "Jan"
    months[2] = "Feb"
    months[3] = "Mar"
    months[4] = "Apr"
    months[5] = "May"
    months[6] = "Jun"
    months[7] = "Jul"
    months[8] = "Aug"
    months[9] = "Sep"
    months[10] = "Oct"
    months[11] = "Nov"
    months[12] = "Dec"

    Dim monthPart as String
    Dim dayPart as String
    Dim yearPart as String

    dayPart = Format(sourceDate, "dd")
    yearPart = Format(sourceDate, "yyyy")
    monthPart = months[Month(sourceDate)]

    FormatDate = dayPart & " " & monthPart & " " & yearPart

End Function
于 2014-06-12T13:45:21.533 に答える