启动程序前的Feed Input参数

时间:2015-11-06 07:52:19

标签: c# datetime

我正在制作一个程序,一小段代码,我想在输入日期时获取周数。但是有一个小小的转折,我不想在运行程序之后但在它之前提供参数。我想从RunCtrl + R开始我的计划。我的程序名为getWeek。所以当我输入Run getWeek 6-11-2015时,我应该得到一个TextBox,说“第45周”。纯粹的爱好工作。以下是我查找周数的代码。

public static int GetIso8601WeekOfYear(DateTime time)
{
    DayOfWeek day = CultureInfo.InvariantCulture.Calendar.GetDayOfWeek(time);
    if (day >= DayOfWeek.Monday && day <= DayOfWeek.Wednesday)
    {
        time = time.AddDays(3);
    }
    return CultureInfo.InvariantCulture.Calendar.GetWeekOfYear(time, CalendarWeekRule.FirstFourDayWeek, DayOfWeek.Monday);
} 

问题是如何从Run中获取DateTime time。请帮忙。

2 个答案:

答案 0 :(得分:1)

您可以在致电应用时提供一些参数。只需修改Program.cs中的Main方法即可。在Main方法中添加一个数组。然后你可以运行exe并在exe后面添加一些值,例如WindowsApplication6 abc def ghi

using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;

namespace WindowsFormsApplication6
{
    static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main(string[] args)
        {
            foreach (var arg in args)
            {
                MessageBox.Show(arg);
            }

            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
    }
}

如果要从Visual Studio提供一些参数(比如在调试时),可以在项目属性中添加它们。

enter image description here

答案 1 :(得分:0)

我认为您的问题是,您无法将输入string转换为DateTime。 这是一个方法,您可以使用它来获取DateTime

    public static DateTime GetDateTimeFromString(string date)
    {
        string[] split = date.Split('-');
        int day = Convert.ToInt32(split[0]);
        int month = Convert.ToInt32(split[1]);
        int year = Convert.ToInt32(split[2]);
        return new DateTime(year, month, day);
    }

注意:此功能特定于您的格式化字符串。

然后你可以像这样调用这个方法:

        string date = "06-11-2015";
        DateTime time = GetDateTimeFromString(date);
        textBox1.Text = "Week " + Convert.ToString(GetIso8601WeekOfYear(time));