以特定模式格式化日期字符串

时间:2018-04-17 16:03:03

标签: c# .net datetime

我有一个以这种格式显示日期格式

  

4月17日星期二,2018年6:12:02

我试过这个

class Program
{
    static void Main(string[] args)
    {
        var today = DateTime.Now.AddDays(-1);
        var day = today.Day;
        var month = today.Month;
        var year = today.Year;

        Console.WriteLine(today);
        Console.WriteLine(day);
        Console.WriteLine(month);
        Console.WriteLine(year);
        var answer = day + "/" + month + "/" + year;
        Console.WriteLine(answer);
        Console.WriteLine(today);
    }
}

我怎样才能像星期二,星期三一样以全文获取月份和日期,也可以将日期更改为AM和PM ... 我可以在int中获得年份和日期。

2 个答案:

答案 0 :(得分:5)

这取自评论中列出的docs。您基本上使用要显示的格式添加字符串格式模式。请注意,大写和小写格式之间存在差异。

Soner Gönül所述,如果您的目标受众群体不是基于英语的,请考虑在CultureInfo.InvariantCulture字段中添加toString()字段。这样,显示的日期与某种文化无关。不要忘记包含System.Globalization

来自docs

  

不变文化数据随着时间的推移和跨安装的文化保持稳定,无法由用户自定义。这使得不变文化对于需要与文化无关的结果的操作特别有用,例如格式化和解析格式化数据的解析操作

var today = DateTime.Now.AddDays(-1);

Console.WriteLine(today.ToString("dddd MMMM dd hh:mm:ss tt yyyy", CultureInfo.InvariantCulture));

// Monday April 16 12:11:06 PM 2018 <- My time

答案 1 :(得分:1)

这是经典格式问题。

如果您想获得DateTime textual (又名字符串)表示,最常用的方法是使用ToString method和可选的格式和文化设置。

您的目标字符串包含基于英语的月份和日期名称。这就是为什么您需要使用像InvariantCulture这样的基于英语的文化设置的原因。

在您的字符串中添加格式,您只需要遵循custom date and time format strings页面上的规则。

var answer = DateTime.Now.AddDays(-1).ToString("dddd MMMM dd h:mm:ss yyyy", 
                                               CultureInfo.InvariantCulture);