Когда вы сохраняете файлы журналов Siemens WinCC Flexible в виде текстовых файлов, у вас будет одно поле для даты и времени, а другое поле для тиков:
TimeString
Time_ms
"2024-03-16 00:38:20"
45367026614.6759
"2024-10-30 17:17:54"
45595720764.7685
Поскольку в поле даты и времени не отображаются миллисекунды, мне нужно было использовать другое поле, чтобы получить значение.
После некоторых проблем я понял, что Siemens использует дату 30 декабря. , 1899 год в качестве даты начала. Я не знаю, как они пришли к этой дате.
Наконец-то мне удалось преобразовать тики в дату и время.
Теперь мой вопрос касается преобразования даты и времени в такую галочку.
Цель — преобразовать поля этой таблицы друг в друга.
Кто-нибудь знает решение?
Насколько я знаю, моя проблема связана с функцией «DateTimeToSiemensTime».
Это то, что я готово:
double mainTick = 45590722754.8727; //"2024-10-25 17:20:46", as shown in log file
DateTime dt = SiemensTimeToDateTime(mainTick);
double calcTick = DateTimeToSiemensTime(dt);
double diff = calcTick - mainTick; //Goal: This should be zero but it isn't!
DateTime SiemensTimeToDateTime(double siemensTime)
{
// Julian Date (JD): Jan 1st, 1900
// Dublin Julian Date (DJD): Dec 31st, 1899
// Siemens: Dec 30th, 1899 --- WHY??!!!!!
// Start with new date object as Dec 30th, 1899.
// Divide siemensTime by 1000000 to get the number of Days.
DateTime startDateTime = new DateTime(1899, 12, 30, 0, 0, 0);
return startDateTime.AddDays(siemensTime / 1_000_000d);
}
double DateTimeToSiemensTime(DateTime dateTime)
{
DateTime startDateTime = new DateTime(1899, 12, 30, 0, 0, 0);
TimeSpan ts = dateTime.Subtract(startDateTime);
return (double)(ts.Ticks) / 1_000_000d;
}
Подробнее здесь: https://stackoverflow.com/questions/791 ... vice-versa
Преобразование тактов WinCC в DateTime C# и наоборот ⇐ C#
Место общения программистов C#
-
Anonymous
1731071658
Anonymous
Когда вы сохраняете файлы журналов Siemens WinCC Flexible в виде текстовых файлов, у вас будет одно поле для даты и времени, а другое поле для тиков:
TimeString
Time_ms
"2024-03-16 00:38:20"
45367026614.6759
"2024-10-30 17:17:54"
45595720764.7685
Поскольку в поле даты и времени не отображаются миллисекунды, мне нужно было использовать другое поле, чтобы получить значение.
После некоторых проблем я понял, что Siemens использует дату 30 декабря. , 1899 год в качестве даты начала. Я не знаю, как они пришли к этой дате.
Наконец-то мне удалось преобразовать тики в дату и время.
Теперь мой вопрос касается преобразования даты и времени в такую галочку.
Цель — преобразовать поля этой таблицы друг в друга.
Кто-нибудь знает решение?
Насколько я знаю, моя проблема связана с функцией «[b]DateTimeToSiemensTime[/b]».
Это то, что я готово:
double mainTick = 45590722754.8727; //"2024-10-25 17:20:46", as shown in log file
DateTime dt = SiemensTimeToDateTime(mainTick);
double calcTick = DateTimeToSiemensTime(dt);
double diff = calcTick - mainTick; //Goal: This should be zero but it isn't!
DateTime SiemensTimeToDateTime(double siemensTime)
{
// Julian Date (JD): Jan 1st, 1900
// Dublin Julian Date (DJD): Dec 31st, 1899
// Siemens: Dec 30th, 1899 --- WHY??!!!!!
// Start with new date object as Dec 30th, 1899.
// Divide siemensTime by 1000000 to get the number of Days.
DateTime startDateTime = new DateTime(1899, 12, 30, 0, 0, 0);
return startDateTime.AddDays(siemensTime / 1_000_000d);
}
double DateTimeToSiemensTime(DateTime dateTime)
{
DateTime startDateTime = new DateTime(1899, 12, 30, 0, 0, 0);
TimeSpan ts = dateTime.Subtract(startDateTime);
return (double)(ts.Ticks) / 1_000_000d;
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79160256/converting-wincc-ticks-to-c-sharp-datetime-and-vice-versa[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия