我希望有一个以 00:00 开头的时间字段,这正是我想要的格式。
当用户键入时间时,我想读取击键并将其放置在我预先分配的值内。
例如,当我输入“7”时 - 我希望它显示 07:00。 然后输入“a”: - 它实际上会忽略它并仍然返回 07:00,然后输入“3” - 它会返回 07:30
所以另一个版本是
所以另一个版本是
寻找每次都使用此逻辑(或更简单更有效的版本)但不会用 00:00 覆盖每次迭代的时间的东西。这显然只是没有 Form 功能的 C#,这就是我陷入困境的地方。
using System;
string time = "00:00";
char[] cA = time.ToCharArray();
string entry = "0";
int entryNum = 0;
if (TryNumber(entry))
{
entryNum = Convert.ToInt32(entry);
}
int valueToChange = CharNum(cA[0], cA[1], cA[3], cA[4]);
if (valueToChange == 0)
{
if (Char1(entryNum))
{
time = entry + cA[1] + cA[2] + cA[3] + cA[4];
}
else
{
valueToChange = valueToChange + 1;
}
}
if (valueToChange == 1)
{
int v1 = 0;
if (cA[0].Equals('1')) { v1 = 1; }
if (Char2(v1, entryNum))
{
time = cA[0] + entry + cA[2] + cA[3] + cA[4];
}
else
{
valueToChange = valueToChange + 2;
}
}
if (valueToChange == 3)
{
if (Char3(entryNum))
{
time = cA[0] + cA[1] + cA[2] + entry + cA[4];
}
else
{
valueToChange = valueToChange + 1;
}
}
if (valueToChange == 4)
{
if (Char4(entryNum))
{
time = cA[0] + cA[1] + cA[2] + cA[3] + entry;
}
else
{
valueToChange = 9;
}
}
if (valueToChange == 9)
{
time = $"{cA[0]}{cA[1]}{cA[2]}{cA[3]}{cA[4]}";
}
Console.WriteLine(time);
bool Char1(int value)
{
bool result = false;
if (value == 0 || value == 1) { result = true; }
return result;
}
bool Char2(int value1, int value)
{
bool result = false;
if (value1 == 0 && value >= 0 && value <= 9) { result = true; }
else if (value1 == 1 && value >= 0 && value <= 1) { result = true; }
return result;
}
bool Char3(int value)
{
bool result = false;
if (value >= 0 && value <= 5) { result = true; }
return result;
}
bool Char4(int value)
{
bool result = false;
if (value >= 0 && value <= 9) { result = true; }
return result;
}
int CharNum(int v1, int v2, int v3, int v4)
{
int result = 0;
if (v4 > 0) { result = 9; }
else if (v3 > 0) { result = 4; }
else if (v2 > 0) { result = 3; }
else if (v1 == 1) { result = 1; }
return result;
}
bool TryNumber(string value)
{
string e = value;
int i = 0;
if (int.TryParse(value, out i))
{
return true;
}
else
{
return false;
}
}
也许您使用内置的文本模式=时间。
它不是100%如你所问,但你的规范有一些“问题”。
例如,如果我想要 10:30,还是 1:30?
所以,10:03 的 1 和 3 没有意义,因为我可能想要:
1:03
10:03
1:30
10:30
因此,输入 1,然后输入 3 并不能真正得到 10:03,那么您将如何输入 10:30?
正如我所说,您可能最好使用默认文本模式=时间。
它将执行您所要求的大部分操作,不允许用户输入非数字字符,并格式化您想要的大部分内容。
所以,说我想要 10:30
如果我输入 1,0,3,那么这就是我得到的 例如,这个:
标记:
<h3>enter time</h3>
<asp:TextBox ID="txtTime" runat="server"
TextMode="Time">
</asp:TextBox>
所以,10:30,然后是 1,0,3
现在,上面当然有AM/PM
我们只需尝试谷歌,看看是否可以删除 am/pm。
如果您需要超过 12 小时,那么上述内容很可能对您没有帮助。