需要帮助基于C#中的日历的时间计算

时间:2019-05-16 01:14:30

标签: c# time

所以我正在使用Visual Studio 2017,并使用.Net表单。我正在尝试制作一个时钟,以下列格式显示时间 一周中的某年的某年的几周,每秒钟7小时分

我很好地将变量设置为年,小时,分钟和秒,因为这是基本的事情。但是,我找不到一种方法来获取一年中的星期几和7月的某几天。

因此,我已经尝试使用简单的数学365-DateTime.now.day并将其除以7来计算一周的时间了。这太乱了,我得到了错误日志(duh)

我在一周中的每一天都做同样的事情,但是使用上面的星期公式作为开始。

我知道我没有做太多尝试,但是我对C#还是很陌生。它是我为学习而制作的应用程序。我知道datetime部分中缺少代码。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApp3
{
    public partial class Form1 : Form
    {

        Timer t = new Timer();

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            //timer interval
            t.Interval = 1000; //in milliseconds

            t.Tick += new EventHandler(this.t_tick);

            //start timer when form loads
            t.Start(); //this will use t_tick() method
        }

        //timer interval
        private void t_tick(object sender,EventArgs e)
        {
            //get current time
            int yy = DateTime.Now.year;
            int ww = DateTime.Now.//missing code,get the week of the current year??
            int wd = DateTime.Now.DayOfWeek;  //on 7 days??
            int hh = DateTime.Now.Hour;
            int mm = DateTime.Now.Minute;
            int ss = DateTime.Now.Second;

            //time
            String time = "";

            //padding leading
            if(hh < 10)
            {
                time += "0" + hh;
            }
            else
            {
                time += hh;
            }
            time += ":";

            if (mm < 10)
            {
                time += "0" + mm;
            }

            else
            {
                time += mm;
            }
            time += ":";

            if (ss < 10)
            {
                time += "0" + ss;
            }

            else
            {
                time += ss;
            }

            //update label
            label1.Text = time;






        }

    }
}

因此,预期结果很简单。我想如上所述输出日期和时间。由于我的代码不完整,实际结果什么也没有。

注意:我知道以后需要更改“ hh <10”的内容。要测试它是否按照我的想法工作,这是一个基本时钟代码。

1 个答案:

答案 0 :(得分:0)

System.Globalization中的Calendar class应该可以满足您的需求。

此外,要返回星期几的数字表示,您可以将DayOfWeek强制转换为int。

这是您需要填写两个缺失变量的代码:

        Calendar cal = CultureInfo.InvariantCulture.Calendar;
        int ww = cal.GetWeekOfYear(DateTime.Now, CalendarWeekRule.FirstDay, DayOfWeek.Sunday);
        int wd = (int)DateTime.Now.DayOfWeek;

确保还添加了using语句:

using System.Globalization;