0

私のアプリケーションでは、従業員のログイン時間を格納する"Login" という名前の TextBoxを使用しています。今、私はこの文字列を変換し、時間と分を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.Parse() の一般的な問題は、人々が 1 つの形式しか提供しないことです。これは、例に含まれる時刻が 1 つしかないため、それほど明白ではない失敗につながります。たとえば、以前に投稿されたすべての例では、時間は「hh」として指定されていました。これは、元の作成者が投稿した「12」にはうまく機能しますが、時間が「8」のような 1 桁の場合は失敗します (「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 に答える
0

まず、文字列はどのようにレンダリングされ、カルチャは不変ですか?

var myDate = DateTime.Parse(Login.Text);
int HRS = myDate.Hour;
int MINS = myDate.Minute;
于 2013-04-29T13:21:56.510 に答える