有没有更好的方法来拆解日期?

4

为了学习最佳实践,我有一个问题。在寻找一种找到本周开始日期的方法时,我遇到了这个线程。"https://dev59.com/YHVD5IYBdhLWcg3wQZQg"

问题:我需要格式为4-3-2011的日期,有没有更有效的方法来完成这个任务,而不是我的代码混合使用?

DateTime dt = DateTime.Now.StartOfWeek(DayOfWeek.Sunday);
            int ddt = dt.Day;
            int mdt = dt.Month;
            int ydt = dt.Year;
            string sddt = ddt.ToString();
            string smdt = mdt.ToString();
            string sydt = ydt.ToString();
            string fdate = (smdt + "-" + sddt + "-" + sydt);

线程代码:作者 Sarcastic

public static class DateTimeExtensions
    {
        public static DateTime StartOfWeek(this DateTime dt, DayOfWeek startOfWeek)
        {
            int diff = dt.DayOfWeek - startOfWeek;
            if (diff < 0)
            {
                diff += 7;
            }

            return dt.AddDays(-1 * diff).Date;
        }
DateTime dt = DateTime.Now.StartOfWeek(DayOfWeek.Sunday);
3个回答

11

2

更好吗?不确定。

对我来说,第二个代码更好,所以你可以直接使用它。

dt.ToString("d-m-yyyy");

1
一个稍微更好的扩展方法,考虑当前文化 (来自上面相同的线程)
public static class DateTimeExtensions {
    public static DateTime StartOfWeek(this DateTime date) {
        System.Globalization.CultureInfo culture = System.Threading.Thread.CurrentThread.CurrentCulture;
        DayOfWeek dayOfWeek = culture.DateTimeFormat.FirstDayOfWeek;
        return date.AddDays(dayOfWeek - date.DayOfWeek);
    }
}

然后使用以下方式调用:

DateTime.Now.StartOfWeek().ToString("M-d-yyyy");

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接