8

我想转换DateTimeString.

检查下面的代码。

namespace TestDateConvertion
{
    class Program
    {
        static void Main(string[] args)
        {
            object value = new DateTime(2003,12,23,6,22,30);
            DateTime result = (DateTime)value;
            Console.WriteLine(result.ToString("dd/MM/yyyy"));
            Console.ReadLine();
        }
    }
}

我已将系统日期格式更改为 Faeroese。

我得到的输出为

23-12-2013

我应该如何获得输出?

23/12/2013

并考虑另一种情况,假设我有一个 Customculture Info ,并且我想将我的日期转换为我的自定义文化,我之前所做的如下,

string.Format(customCulture, "{0:G}", result);

现在我应该如何使用 customCulture 获取字符串中的日期时间,它不应该依赖于系统 DateTime?

4

7 回答 7

13

看起来您的文化的日期分隔符是-并且正如 Tim 所指出的那样,/用它替换了自己。

您应该CultureInfo.InvariantCulture在方法中用作第二个参数result.ToString()

获取与区域性无关(不变)的 CultureInfo 对象。

object value = new DateTime(2003, 12, 23, 6, 22, 30);
DateTime result = (DateTime)value;
Console.WriteLine(result.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture));

输出将是;

23/12/2003

这里有一个DEMO

于 2013-07-08T12:12:40.623 回答
3

试试这个

Console.WriteLine(DateTime.Now.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture));
于 2013-07-08T12:12:11.127 回答
1

你需要添加这个

Console.WriteLine(result.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture));

现在你的代码变成了

object value = new DateTime(2003, 12, 23, 6, 22, 30);
DateTime result = (DateTime)value;
Console.WriteLine(result.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture));
Console.ReadLine();

注意 *使用 System.Globalization 添加;*

于 2013-07-08T12:16:02.510 回答
0

您可以使用不变的文化:

Console.WriteLine(
    result.ToString("dd/MM/yyyy", 
    System.Globalization.CultureInfo.InvariantCulture
);
于 2013-07-08T12:12:34.220 回答
0

尝试

string.Format("{0:dd/MM/yyyy}",result)

祝你好运

翅膀

于 2013-07-08T12:13:20.793 回答
0

我完全同意 Tim Schmelter 的评论和 Soner Gönül 的回答。只是想补充一点,当您使用日期时间格式时,您应该指定文化,因为默认情况下文化将来自Thread.CurrentThread.CurrentCulture(文化集在Control Panel->Region and Languages->Format),这意味着使用不同的设置,您的输入会有所不同。

看看你在不同文化中的例子:

object value = new DateTime(2003, 12, 23, 6, 22, 30);
DateTime result = (DateTime)value;
foreach (var culture in CultureInfo.GetCultures(CultureTypes.AllCultures))
{
       Console.WriteLine(result.ToString("dd/MM/yyyy", culture));    
}
于 2013-07-08T12:28:17.800 回答
0

'/' 是一个特殊的字符,表示“区域设置日期分隔符”。如果你想像普通字符一样使用它,你可以使用引用图表 '\' 来引用它 示例:

DateTime.Now.ToString(@"dd\/MM\/yyyy")
于 2013-07-08T12:50:19.020 回答