跨国家/地区日期时间格式



我正在为ssis包编写c#脚本,我在英国服务器上运行它,但我想以yyyMMdd的形式获得美国格式的日期时间。

但是当我做datevvariable . 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 dt = DateTime.ParseExact(dateString, "ddMMyyyy", CultureInfo.InvariantCulture);
dt.ToString("yyyyMMdd");

所以还有一件事要考虑。如果你在SSMS或Excel或....中查看日期它将使用您的计算机文化,因为datetime是一个对象而不是字符串,并且您的计算机设置告诉智能程序如何显示它。

所以如果Date1变量数据类型是日期或datetime数据类型,你仍然会得到错误的格式。你可以将Date1变量更改为字符串来查看结果,或者你可以将结果转储为文本文件并在记事本或其他东西中打开。

乍一看,@Ozan对于如何更有效地设置格式给出了一个很好的答案。

尝试使用DateTime.ParseExact方法实现参见演示:

string strDate = "09-Aug-2016";
DateTime datDate;
if (DateTime.TryParseExact(strDate, new string[]
{
"dd-MMM-yyyy"
}
, System.Globalization.CultureInfo.InvariantCulture, System.Globalization.DateTimeStyles.None, out datDate))
{
    Console.WriteLine(datDate.ToString("yyyy/MM/dd"));
}
else
{
    //Error in datetime format
}

或更简单的参见演示:

DateTime datetime = DateTime.Now;
Console.WriteLine(datetime.ToString("yyyy/MM/dd"));

相关内容

  • 没有找到相关文章

最新更新