2

ToStringのデフォルトの形式は、サーバーに関連するものに依存していますか?問題は次のとおりです。ローカルマシンでアプリケーションをテストしてテストしましたが、ToString()はデフォルトで「MM / dd / yyyyhh:mm:ss tt」の形式で返されますが、サーバーでは「dd/MM / yyyyhh:mm:ss tt」として返されているように見えますが、これは消費側のアプリケーションが予期しておらず、エラーを引き起こしています。

Dim uvExpireDate = DateTime.Now.AddMinutes(1)
Dim token = String.Format(fmtString, uvExpireDate.ToUniversalTime().ToString(), [various other params])

よろしくお願いします。

4

3 に答える 3

6

フォーマットは、サーバーで定義されているデフォルトのカルチャによって異なります。

特定のカルチャを適用する場合は、を取得するオーバーロードを使用するIFormatProviderか、現在のスレッドCultureUICulture目的のカルチャに設定する必要があります。

InvariantCultureは特定のカルチャを表すものではありませんが、に基づいているen-USため、使用に適している可能性があります。

uvExpireDate.ToUniversalTime().ToString(CultureInfo.InvariantCulture)

したがって、全体の行は次のようになります。

Dim token = String.Format(fmtString, _ 
            uvExpireDate.ToUniversalTime().ToString(CultureInfo.InvariantCulture), _ 
            [various other params])
于 2011-11-18T20:48:48.753 に答える
0

コンピュータの「地域と言語のオプション」(コントロールパネル)は、日付形式を指定します。

日付形式をハードコーディングできます。例:

uvExpireData.ToString(@"yyyyMMdd HH.mm.ss")
于 2011-11-18T20:52:27.727 に答える
0

MSDNは、サーバー上でカルチャを変更できない場合に、コードを使用してカルチャを設定する方法を示しています(意図しない結果の法則が適用される場合があります)。

using System;
using System.Globalization;
using System.Threading;

public class FormatDate
{
   public static void Main()
   {
      DateTime dt = DateTime.Now;
      // Sets the CurrentCulture property to U.S. English.
      Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
      // Displays dt, formatted using the ShortDatePattern
      // and the CurrentThread.CurrentCulture.
      Console.WriteLine(dt.ToString("d"));

      // Creates a CultureInfo for German in Germany.
      CultureInfo ci = new CultureInfo("de-DE");
      // Displays dt, formatted using the ShortDatePattern
      // and the CultureInfo.
      Console.WriteLine(dt.ToString("d", ci));
   }
}
于 2011-11-18T20:52:42.533 に答える