请教C#数据库取出星期几的值,赋值到时间控件的值中

xiehuangda 2021-01-02 11:30:17
请教C#数据库取出星期几的值,赋值到时间控件的值中

DateTimePicker控件名Tm
Tm默认是当前时间。
数据库已取出来星期几的值,格式为:日一二三四五六。每次只取一个值,例如:六
string tWk=dataWk;
请教如何把tWk的值 赋值到Tm控件里,让控件时间对应到指定的时间。
...全文
8110 12 打赏 收藏 举报
写回复
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
Denuin 2021-01-05

Dictionary<string,int> dicW = new Dictionary<string,int>()
{
	["日"] = 0,
	["一"] = 1,
	["二"] = 2,
	["三"] = 3,
	["四"] = 4,
	["五"] = 5,
	["六"] = 6,
};
string wDay = "一";  // for test
DateTime nowDt = DateTime.Now;

int w1 = (int) nowDt.DayOfWeek;  // 今天星期几的数字
int w2 = dicW[wDay]; // 目标星期几的数字

int n =  w1 > w2 ? 7 + w2 - w1 : w2 - w1; // 间隔天数
DateTime newDt = nowDt.AddDays(n); // 目标日期
Console.WriteLine(newDt);
  • 打赏
  • 举报
回复

  public static DateTime GetDate(string weekDay) {
            var dtNow = DateTime.Now.Date;
            var old_weekDay = dtNow.DayOfWeek.GetHashCode();
            int in_weekDay = 0;
            switch (weekDay)
            {

                case "日":
                    in_weekDay = 0;
                    break;
                case "六":
                    in_weekDay = 6;
                    break;
                case "五":
                    in_weekDay = 5;
                    break;
                case "四":
                    in_weekDay = 4;
                    break;
                case "三":
                    in_weekDay = 3;
                    break;
                case "二":
                    in_weekDay = 2;
                    break;
                case "一":
                    in_weekDay = 1;
                    break;
            }
            if (old_weekDay == in_weekDay) return dtNow;
            else {
                int index = in_weekDay - old_weekDay;
                if (index < 0) {
                    index = 7 - old_weekDay + in_weekDay;
                }
                dtNow = dtNow.AddDays(index);
            }
            return dtNow;
        }
  • 打赏
  • 举报
回复
小丶平 2021-01-04
转换成字符串拼接
  • 打赏
  • 举报
回复
肖无疾 2021-01-04

string dataWk = "日";
            DateTime today = DateTime.Now;
            for(int i = 0; i < 7; i++)
            {
                DateTime temp = today.AddDays(i);
                if (temp.ToString("ddd").Contains(dataWk))
                {
                    Tm.Value = temp;
                    break;
                }
            }
  • 打赏
  • 举报
回复
xiehuangda 2021-01-04
string tWk=dataWk; 库中列名为:dataWk 只存一个字。例如存的是:六 把值取出来赋值到tWk DateTimePicker控件名Tm Tm 取的是本地当前时间。 然后,把tWk加到Tm里 = 对应出新时间。 新时间需要最近的。新时间只能向前,不能倒退。如果恰好相等也行。
  • 打赏
  • 举报
回复
gs0038 2021-01-04
从数据库取回日期不行吗,如果都是当前时间,有必要从数据库取回星期几吗?当前时间不就包括了星期几了吗,日期跟周几不就是一块的吗,
  • 打赏
  • 举报
回复
姎楹 2021-01-04

string s = DateTime.Now.ToString("yyyy-MM-dd") + " " + "星期一";//yyyy-MM-dd dddd
 //string s2 = DateTime.Now.ToString("yyyy-MM-dd dddd");
Tm.Value = Convert.ToDateTime(s);
  • 打赏
  • 举报
回复
HerryDong 2021-01-03
就像4楼说的,2021年1月3日是星期天,你的数据库里取出的值是“六”,你这个所谓的“+”是怎么个形式的加?问题还是要尽量描述清楚别人才好回答
  • 打赏
  • 举报
回复
X-i-n 2021-01-02
转换不是问题,问题是怎么把一个“六”转成具体的日期,1月2号是周6,1月9号也是周6。 如果单纯看转换,只要用一个switch就行了。
  • 打赏
  • 举报
回复
X-i-n 2021-01-02
好,当前时间是2021年1月2日 17:14:30,数据库取出来是周1,怎么加?
  • 打赏
  • 举报
回复
可爱的肥皂 2021-01-02
这个周是怎么个加法?没懂。
  • 打赏
  • 举报
回复
xiehuangda 2021-01-02
时间是取当前时间,数据库只是取周几出来。 使用当前时间+取出来的周几=新的时间。
  • 打赏
  • 举报
回复
发帖
C#

10.8w+

社区成员

.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
帖子事件
创建了帖子
2021-01-02 11:30
社区公告

让您成为最强悍的C#开发者