我正在制作一个程序,一小段代码,我想在输入日期时获取周数。但是有一个小小的转折,我不想在运行程序之后但在它之前提供参数。我想从Run
或Ctrl + 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
。请帮忙。
答案 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提供一些参数(比如在调试时),可以在项目属性中添加它们。
答案 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));