在我的应用程序中,我有一个名为“Login”的 TextBox ,它存储了一个empoloyee的登录时间。现在我只想转换此字符串并将小时和分钟分别存储在2个不同的Integer变量中。例如:
Login.text="12:40 PM"; // 12:40 PM is system generated time
int HRS=12;
int MINS=40;
我尝试了以下代码段:
string log = Login.Text;
char[] mychar = {'A','M','P'};
int workhrs = Convert.ToInt32(System.DateTime.Now.ToString("HH"));
int logtime = Convert.ToInt32(log.TrimEnd(mychar));
答案 0 :(得分:7)
var dt = DateTime.ParseExact(text,"hh:mm tt",CultureInfo.InvariantCulture);
int h = dt.Hour;
int m = dt.Minute;
答案 1 :(得分:2)
你可以通过简单的拆分这样做:
string s = "12:40 PM";
int HRS= Convert.ToInt32(s.Split(':')[0]);
int MINS= Convert.ToInt32(s.Split(':')[1].Split(' ')[0]);
或者使用DateTime.ParseExact()方法,如:
string s = "12:40 PM";
DateTime time = DateTime.ParseExact(s,"hh:mm tt",CultureInfo.InvariantCulture);
int HRS = time.Hour;
int MINS= time.Minute;
答案 2 :(得分:1)
string StringWithNumberIn = "42";
int SomeValue = Convert.ToInt32(StringWithNumberIn);
或者,您可以使用Int32.TryParse
,如果字符串中的值实际上不是有效的int,则不会抛出异常。
答案 3 :(得分:0)
你有很多选择。其中,Int32.Parse()和Convert.ToInt32()
http://msdn.microsoft.com/en-us/library/system.int32.parse.aspx
答案 4 :(得分:0)
首先,你的字符串是如何呈现的,文化是不变的吗?
var myDate = DateTime.Parse(Login.Text);
int HRS = myDate.Hour;
int MINS = myDate.Minute;
答案 5 :(得分:0)
您可以将文本转换为DateTime对象,然后从那里提取。
DateTime time = DateTime.Parse(Login.Text);
int minute = time.Minute;
int hour = time.Hour;
答案 6 :(得分:0)
DateTime.Parse()的一个常见问题是人们只提供一种格式,这导致一些不那么明显的失败,因为这个例子只有一次。例如,在所有先前发布的示例中,小时被指定为“hh”,其对于原始作者发布的“12”非常有效,但是如果小时是单个数字如“8”则失败(以“hh”成功) “它必须是”08“而不是)。如果更改为“h”,则接受“8”,但“12”将失败!答案是创建一个允许格式的数组并将其传递给Parse()。以下代码适用于大多数时间条目,包括军事时间:
string s = "8:40 PM"; // or from your login box
DateTime time;
string[] formats = {"h:mm tt", "hh:mm tt", "H:mm", "HH:mm"};
if (DateTime.TryParseExact(s, formats, CultureInfo.InvariantCulture, DateTimeStyles.None, out time))
{
int HRS = time.Hour;
int MINS = time.Minute;
Console.WriteLine("HRS = " + HRS.ToString());
Console.WriteLine("MINS = " + MINS.ToString());
}
else
{
Console.WriteLine("Invalid time format!");
}