c#datetime创建星期几小时和分钟

时间:2016-09-30 04:06:46

标签: c# datetime

如何仅根据以下信息创建日期时间: 星期几,小时&小步舞曲。

即。我不在乎它是什么月份,甚至不关心日期是什么(我在数据库中没有这些信息)。

我以为我可以将它们解析为字符串,但结果却比我想象的更难。

5 个答案:

答案 0 :(得分:4)

为您创建功能可能对您有所帮助..

   public DateTime CreateDayOfWeek(int DayOfWeek,int hour,int min)
        {
            DateTime dt = new DateTime(DateTime.Now.Year,DateTime.Now.Month,DateTime.Now.Day,hour,min,0);


            // The (... + 7) % 7 ensures we end up with a value in the range [0, 6]
            int daysUntilTuesday = (DayOfWeek - (int)dt.DayOfWeek + 7) % 7;
            //  DateTime nextTuesday = today.AddDays(daysUntilTuesday);


            dt = dt.AddDays(daysUntilTuesday);

            return dt;
        }

我已经测试了几个日期,它为我工作.. 如果您有任何问题,请告诉我。

这是.netFiddle

答案 1 :(得分:1)

你说你不关心它是什么月份或日期,这使我假设你想要任何日期,只要它是一周中的正确日期和时间(小时和分钟)。你可以这样做:

var date = new System.DateTime(2016, 9, 25);

date = date.AddDays(dow).AddHours(hours).AddMinutes(minutes);

2016年9月25日是星期天。添加星期几(星期日= 0),即可获得正确的一天。然后添加小时和分钟。当然,如果你愿意,你可以选择任何一个月/一年的任何星期日开始。

答案 2 :(得分:0)

您可以像这样创建日期......

var hour = 1;  // you set this from code
var minute = 1;  // set this from code
var now = DateTime.Now;
var tempDateTime = new DateTime(now.Year, now.Month, now.Day, hour, minute, 0);
// Make this enum whatever you want your date to be...
var num = (int)DayOfWeek.Sunday;
var dateForComparison = tempDateTime.AddDays(num - (int)tempDateTime.DayOfWeek);

现在,dateForComparison会保存一个日期,其中包含您设置的时间值以及您指定的星期几。

答案 3 :(得分:-1)

您可以创建一个用于构建日期的函数:

public DateTime BuildDate(Int32 day, Int32 hour, Int32 minute)
        {
            var now = DateTime.Now;

            var initialDate = now.AddDays(((Int32)now.DayOfWeek + 1) * -1);

            return new DateTime(initialDate.Year, initialDate.Month, initialDate.AddDays(day).Day, hour, minute, 0);
        }

在这种情况下,星期几从星期日开始。

答案 4 :(得分:-2)

您可以使用: DateTime.ToString方法(字符串)

DateTime.Now.ToString("ddd HH:mm") // for military time (24 hour clock)

更多:https://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx