Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将字符串转换为整数?_C#_Asp.net_Casting_Type Conversion - Fatal编程技术网

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

C# 如何将字符串转换为整数?,c#,asp.net,casting,type-conversion,C#,Asp.net,Casting,Type Conversion,在我的应用程序中,我有一个名为Login的文本框,它存储员工的登录时间。现在我只想转换这个字符串,将小时和分钟分别存储在两个不同的整数变量中。例: 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.T

在我的应用程序中,我有一个名为Login的文本框,它存储员工的登录时间。现在我只想转换这个字符串,将小时和分钟分别存储在两个不同的整数变量中。例:

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));

或者,您可以使用Int32.TryParse,如果字符串中的值实际上不是有效的int,它不会引发异常。

您有很多选择。其中,Int32.Parse和Convert.ToInt32


首先,字符串是如何呈现的,它是否具有区域性不变性

var myDate = DateTime.Parse(Login.Text);
int HRS = myDate.Hour;
int MINS = myDate.Minute;

您可以将文本转换为DateTime对象,然后从中提取

DateTime time = DateTime.Parse(Login.Text);
int minute = time.Minute;
int hour = time.Hour;

通过简单的拆分,您可以这样做:

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;

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

看看Int32.Parse和Int32.tryparse在下午12:40的用户类型?@Jodrell看起来像是一个时间进入屏幕,用户可以在其中输入登录/注销时间。首先,然后。它是用户输入的还是来自系统?因为我们谈论的是时间,这似乎比简单的子字符串int.tryparse更合适
string s = "12:40 PM";
DateTime time = DateTime.ParseExact(s,"hh:mm tt",CultureInfo.InvariantCulture);
int HRS = time.Hour;
int MINS= time.Minute;
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!");
}