私はssisパッケージ用のC#スクリプトを作成しています。私は英国のサーバーでそれを実行していますが、yyyMMddの形式で米国の形式でdatetimeを取得します。クロスカントリー/リージョンDateTime Formating
私はdatevariablename.ToString( "yyyyMMdd")を実行すると、yyyyddMMという形式の文字列を返します。私はDateTimeの月、日、年のメソッドを使ってみましたが、それでも私には月と日を月として与えてくれます。
yyyyMMddの形式で返される文字列をどのように取得できるか誰にも分かりますか?以下は私のコードのスニペットです:
private static readonly string[] dateFormat = { "M/d/yyyy h:mm:ss tt", "M/d/yyyy h:mm tt",
"MM/dd/yyyy hh:mm:ss", "M/d/yyyy h:mm:ss",
"M/d/yyyy hh:mm tt", "M/d/yyyy hh tt",
"M/d/yyyy h:mm", "M/d/yyyy h:mm",
"MM/dd/yyyy hh:mm", "M/dd/yyyy hh:mm",
"d/M/yyyy h:mm:ss tt", "d/M/yyyy h:mm tt",
"dd/MM/yyyy hh:mm:ss", "d/M/yyyy h:mm:ss",
"d/M/yyyy hh:mm tt", "d/M/yyyy hh tt",
"d/M/yyyy h:mm", "d/M/yyyy h:mm",
"dd/MM/yyyy hh:mm", "dd/M/yyyy hh:mm"
};
public void Main()
{
// TODO: Add your code here
Dts.TaskResult = (int)ScriptResults.Success;
var date = DateTime.Now;
var date2 = DateTime.Now;
var inputDate = Dts.Variables[dateUnformated].Value;
if (DateTime.TryParseExact(inputDate.ToString(), dateFormat, System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out date))
{
var yyyymmdd = date.Year.ToString() + date.Month.ToString("0#") + date.Day.ToString("0#");
Dts.Variables[Date1].Value = yyyymmdd;
Dts.Variables[Date2].Value = date.ToString("yyyyMMdd");
}
「DateTime.ParseExact」を使用 –
M/dとd/M形式の混合リストを入力すると、最初に見つかったものと一致することになります。毎月12日間違いやすい可能性があります。 – Plutonix
@Plutonix goodポイントは、リストが希望の優先順位で注文されている限り、それはまだ有効であることがわかります。月と日が同じ場合、最終的には誰もあなたには1/1/2016対1/1/2016(MM/dd/yyyyとdd/MM/yyyy)は分かりません:) – Matt