C # - получает пользовательский ввод, преобразовывает введенные данные и затем выводит их в текстовое поле - PullRequest
0 голосов
/ 20 сентября 2010

Я пытаюсь скомпилировать свое первое приложение на C # (на основе Visual Studio) ... также используя Windows Forms для ввода (от пользователя) и вывода.

Пользователь помещает числа в шесть текстовых полей (например,2009 20 02 02:49:35) и затем при нажатии кнопки «Преобразовать» программа выводит E1234FB3278DC0 в другое текстовое поле.

Не уверен, что это актуально, но E1234FB3278DC0 = 63370694975000000 (в десятичном формате).

о, я не уверен насчет convertText.writeline ... это должно быть this.textBox7 = microseconds;?

       String dateString = yyyy.Text + dd.Text + mm.Text + hh.Text + mm.Text + ss.Text;
        DateTime timestamp = DateTime.ParseExact(dateString, "yyyy dd mm  hh:mm:ss", CultureInfo.CurrentCulture);
        long ticks = timestamp.Ticks;
        long microseconds = ticks / 10;
        convertedText.WriteLine(microseconds.ToString("X"));

Заранее спасибо .. И я должен поблагодарить Luxspes за оригинальную версию.

1 Ответ

1 голос
/ 20 сентября 2010

Несколько советов об этом фрагменте кода.

    String dateString = yyyy.Text + dd.Text + mm.Text + hh.Text + mm.Text + ss.Text;
    DateTime timestamp = DateTime.ParseExact(dateString, "yyyy dd mm  hh:mm:ss", CultureInfo.CurrentCulture);

Прежде всего, действительно странно, что вы используете один и тот же объект "мм" месяцами и минутами. Та же проблема со спецификатором формата. Для разбора месяца вы должны использовать «M».

    long ticks = timestamp.Ticks;
    long microseconds = ticks / 10;
    convertedText.WriteLine(microseconds.ToString("X"));

Итак, если ваша дата была успешно проанализирована, вы получите количество микросекунд, прошедших с 12:00:00 до полуночи 1 января 0001 года. Это E1234FB3278DC0 в шестнадцатеричном формате (для даты в вашем вопросе). Но в вашем случае дата представлена ​​в секундах. Итак, количество микросекунд будет всегда.

    timestamp.Millisecond*1000;

Понятия не имею о типе объекта convertText. Но мне кажется, это не проблема.

Попробуйте использовать следующий код:

String dateString = yyyy.Text+dd.Text+M.Text+hh.Text+mm.Text+ss.Text;
DateTime dateTime = DateTime.ParseExact(dateString, "yyyy dd M hh:mm:ss", CultureInfo.CurrentCulture);
long microseconds = dateTime.Ticks/10;
convertedText.Text = microseconds.ToString("X");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...