字符数组到指定索引的字符串

本文关键字:索引 字符串 数组 字符 | 更新日期: 2023-09-27 17:56:17

我正在尝试制作时钟。小时是一个字符串。我想将该小时放入 char 数组中,以便我可以将小时分成一个或两个索引。这样,我可以在各个索引上使用大小写,最终将其绑定到网格并为数字时间绘制一条线。

因此,小时被转换为数组。但是我想获取第一个索引 0 并将其存储到字符串或 int 中,以便我可以将其传递到一个函数中,我可以在其中使用大小写。如果我将其保留为字符并将其转换为整数,我会得到一个像 50 这样的数字,这不好。

因此,当我尝试将数组的第一个索引分配给字符串时,它不会让我从数组转换为字符串。

 hr1 = hours[0];

将小时分隔为单独的索引然后将其转换为正确的 int 的最佳选择是什么?另外,时间是 24 小时,我希望它是 12 小时。

private void _timer_Elapsed(object sender, EventArgs e)
{            
    DateTime now = DateTime.Now;
    //DigitalTime = now.ToString("hh:mm:ss tt");
    //DigitalTime = now.ToString();
    //DigitalTime = DateTime.Now.Hour.ToString();
    SecondAngle = now.Second * 6;
    MinuteAngle = now.Minute * 6;
    HourAngle = (now.Hour * 30) + (now.Minute * 0.5);
    string hrs, hr1, hr2;           
    char[] hours = new char[15];
    hrs = DateTime.Now.Hour.ToString("hh:mm:ss tt");
    hours = hrs.ToCharArray();      
    if (hours.Length > 1)
    {                    
        hr1 = hours[0];        // error - 
        hr2 = hours[1];                  
       // SetHourDigit1(Convert.ToInt32(hr1));
    }
    else
    {
       // hr1 = '0';
        hr2 = hours[0];                    
    } 
}         
public void SetHourDigit1(int num)
{
    switch (num)
    {
        case 0:
            MessageBox.Show("num" + num);
            break;
        case 1:
            MessageBox.Show("num" + num);
            break;
        case 2:
            break;
    }
}

字符数组到指定索引的字符串

我会完全避免弄乱字符串和字符数组。改用算术:

int hour = DateTime.Now.Hour;
int leastSignificantDigit = hour % 10;
int mostSignificantDigit = hour / 10;
// Use one of these as input for your switch statement.

%是模运算符;在本例中为除以 10 的余数。

编辑:我注意到你想要一个12小时的时钟。您可以为此添加一些额外的计算。替换第一行代码:

int hour = DateTime.Now.Hour % 12;
if (hour == 0) hour = 12;
if (hours.Length > 1)
            {
                hr1 = hours[0].ToString();        // no error - 
                hr2 = hours[1].ToString();
               // SetHourDigit1(Convert.ToInt32(hr1));
            }

但是如果你想获得部分时间,请使用这个:

dateparts = datestring.splite(':');
string hour = dateparts[0];
string minute = dateparts[1];
string s = dateparts[2];

现在你有小时,分钟,秒和T。因为您可以信任这些部件使用 int.parse 将它们转换为 int。

int nhour = int.parse(hour);
int nminute = int.parse(minute);
int nsecond = int.parse(s);

24小时

hrs = DateTime.Now.Hour.ToString("HH:mm:ss");

这是一个对您有用的链接:DateTime.ToString() 模式

使用模 (%) 运算符将 24 小时值转换为 12 小时,并获取两位数字的第二个数字。没有理由将其格式化为字符串,然后将其转换回数字。

private void _timer_Elapsed(object sender, EventArgs e) { 
  DateTime now = DateTime.Now;
  int hour12 = now.Hour % 12;
  SecondAngle = now.Second * 6;
  MinuteAngle = now.Minute * 6;
  HourAngle = (hour12 * 30) + (now.Minute * 0.5);
  SetHourDigit1(hour12 / 10);
  SetHourDigit2(hour12 % 10);
}