如何将字符串转换为整数?

时间:2013-04-29 13:17:32

标签: c# asp.net casting type-conversion

在我的应用程序中,我有一个名为“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));

7 个答案:

答案 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)

答案 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!");
}