0

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

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

7 回答 7

7
var dt = DateTime.ParseExact(text,"hh:mm tt",CultureInfo.InvariantCulture);
int h = dt.Hour;
int m = dt.Minute;
于 2013-04-29T13:20:44.553 回答
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;
于 2013-04-29T13:24:08.243 回答
1
string StringWithNumberIn = "42";
int SomeValue = Convert.ToInt32(StringWithNumberIn);

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

于 2013-04-29T13:19:06.897 回答
0

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

DateTime time = DateTime.Parse(Login.Text);
int minute = time.Minute;
int hour = time.Hour;
于 2013-04-29T13:22:28.077 回答
0

首先,你的字符串是如何呈现的,它是文化不变的吗?

var myDate = DateTime.Parse(Login.Text);
int HRS = myDate.Hour;
int MINS = myDate.Minute;
于 2013-04-29T13:21:56.510 回答
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!");
}
于 2013-04-29T14:34:28.110 回答
0

你有很多选择。其中,Int32.Parse() 和 Convert.ToInt32()

http://msdn.microsoft.com/en-us/library/system.int32.parse.aspx

http://msdn.microsoft.com/en-us/library/sf1aw27b.aspx

于 2013-04-29T13:19:17.747 回答