[英]How to convert a string to integer?
在我的應用程序中,有一個名為“ Login”的文本框 ,用於存儲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));
var dt = DateTime.ParseExact(text,"hh:mm tt",CultureInfo.InvariantCulture);
int h = dt.Hour;
int m = dt.Minute;
您可以通過簡單的拆分來做到這一點:
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;
string StringWithNumberIn = "42";
int SomeValue = Convert.ToInt32(StringWithNumberIn);
或者,您可以使用Int32.TryParse
,如果字符串中的值實際上不是有效的int,則不會引發異常。
您有很多選擇。 其中,Int32.Parse()和Convert.ToInt32()
http://msdn.microsoft.com/en-us/library/system.int32.parse.aspx
首先,您的字符串是如何呈現的,它的文化是不變的?
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;
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!");
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.