|
|
|
Перевести string в DateTime
|
|||
|---|---|---|---|
|
#18+
Подскажите пожалуйста, какой самый простой способ перевести string в TDateTime с нужным мне форматом? Я хочу сделать так, что компьютер разбирался с форматом даты, а не я. Только без возьни с TFormatSetting - это явно бред. Что-то типа такого. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2019, 12:28 |
|
||
|
Перевести string в DateTime
|
|||
|---|---|---|---|
|
#18+
Valery_B, ну, всё правильно, и т.д. Т.е. еще несколько десятков вариантов. И молиться при этом, чтобы 01.02.2019 интерпретировалась как 'MM-DD-YYYY', а не как 'DD-MM-YYYY' или наоборот. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2019, 12:30 |
|
||
|
Перевести string в DateTime
|
|||
|---|---|---|---|
|
#18+
Как-то так: - а 01.02.2019 это второе января ли первое февраля? - а я откуда знаю, компьютер умнее, он должен сам разобраться... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2019, 12:52 |
|
||
|
Перевести string в DateTime
|
|||
|---|---|---|---|
|
#18+
Barlone- а 01.02.2019 это второе января ли первое февраля? Да там и повеселее могут быть ситуации... Например, 12.12.12 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2019, 12:53 |
|
||
|
Перевести string в DateTime
|
|||
|---|---|---|---|
|
#18+
wadmanBarlone- а 01.02.2019 это второе января ли первое февраля? Да там и повеселее могут быть ситуации... Например, 12.12.12 Хотя... в этом случае как раз супер-умный алгоритм не сможет ошибиться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2019, 12:53 |
|
||
|
Перевести string в DateTime
|
|||
|---|---|---|---|
|
#18+
Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2019, 13:09 |
|
||
|
Перевести string в DateTime
|
|||
|---|---|---|---|
|
#18+
Год отличить от не года - это не сложно, а с остальным сложнее. Я как-то пробовал сделать алгоритм более менее универсальным и он даже иногда правильно выуживает даты, но временами не работает. Любые идеи по улучшению горячо приветствуются: Те, кто не любит корявый код - не смотрите :-) Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2019, 13:12 |
|
||
|
Перевести string в DateTime
|
|||
|---|---|---|---|
|
#18+
wadmanwadmanпропущено... Да там и повеселее могут быть ситуации... Например, 12.12.12 Хотя... в этом случае как раз супер-умный алгоритм не сможет ошибиться. Да ну. год 0012, 1912, 2012... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2019, 13:29 |
|
||
|
Перевести string в DateTime
|
|||
|---|---|---|---|
|
#18+
BarloneКак-то так: - а 01.02.2019 это второе января ли первое февраля? - а я откуда знаю, компьютер умнее, он должен сам разобраться... "Программа сама должна знать, что нужно, а что не нужно". В общем-то, такая программа давно написана. http://button.dekel.ru/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2019, 13:34 |
|
||
|
Перевести string в DateTime
|
|||
|---|---|---|---|
|
#18+
Я делал ф-цию, на вход кот. передавал разбираемую строку и вероятный формат (ГМД, ДМГ, МДГ) Любое нечисло это разделитель. Бил строку на части, проверял на ошибки (мес 1..12, день 1..31), год подгонял до тысяч, если он короткий. Потом из частей получал дату-время. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2019, 13:48 |
|
||
|
Перевести string в DateTime
|
|||
|---|---|---|---|
|
#18+
Barlone - а 01.02.2019 это второе января ли первое февраля? А ты сам-то можешь однозначно ответить на этот вопрос ? Подозреваю - что нет. Точно так же, поступит и компьютер. Первое с чего должна начинаться конвертация - это с локального формата времени. Если она не получилась, пусть дальше работает. Мне ну совсем не хочется разбираться, какой разделитель стоит "-", "." или даже ",". Также, если первым или последним идёт число "2019" (т.е. "четырёхзначное") Думаю, что 8 ядерный CoreI7 в состоянии сам разобраться ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2019, 13:57 |
|
||
|
Перевести string в DateTime
|
|||
|---|---|---|---|
|
#18+
Кстати, строки могут ещё иметь и такой формат +-: автор2019-03-01T00:00:00.000000 2019-03-01T10:59:16.657Z 2019-03-01T10:59:16.657Z +03 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2019, 14:00 |
|
||
|
Перевести string в DateTime
|
|||
|---|---|---|---|
|
#18+
Valery_B Код: pascal 1. функция sscanf ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2019, 14:01 |
|
||
|
Перевести string в DateTime
|
|||
|---|---|---|---|
|
#18+
Valery_BМне ну совсем не хочется разбираться, какой разделитель стоит "-", "." или даже ",". Наверное, надо делать так. Осталось только с форматом определится... Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2019, 14:13 |
|
||
|
Перевести string в DateTime
|
|||
|---|---|---|---|
|
#18+
Ariochфункция sscanf ? автор[Error] Unit1.pas(27): Undeclared identifier: 'sscanf' ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2019, 14:13 |
|
||
|
Перевести string в DateTime
|
|||
|---|---|---|---|
|
#18+
Valery_BДумаю, что 8 ядерный CoreI7 в состоянии сам разобраться ? Если-б он мог, то была-бы тема? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2019, 14:21 |
|
||
|
Перевести string в DateTime
|
|||
|---|---|---|---|
|
#18+
Dimonka, "если у вас есть проблема и вы собираетесь решить ее регулярными выражениями – теперь у вас две проблемы" (С) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2019, 14:40 |
|
||
|
Перевести string в DateTime
|
|||
|---|---|---|---|
|
#18+
vavanDimonka, "если у вас есть проблема и вы собираетесь решить ее регулярными выражениями – теперь у вас две проблемы" (С) Третья проблема была в том, что это всё делалось в PascalScript :-) Так что проблем было куда больше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2019, 15:00 |
|
||
|
Перевести string в DateTime
|
|||
|---|---|---|---|
|
#18+
Valery_B, ты бы озвучил откуда ты получаешь строки. Если их вводит пользователь, то не надо вообще пробовать что-то иное окромя локального формата даты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2019, 15:03 |
|
||
|
Перевести string в DateTime
|
|||
|---|---|---|---|
|
#18+
GunSmoker, В контролы Edit/DateEdit должен безпроблемно вставляться текст(CTRL+V). От куда берётся(CTRL+C) - неизвестно. Пусть из Excel ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2019, 15:12 |
|
||
|
Перевести string в DateTime
|
|||
|---|---|---|---|
|
#18+
На самом деле, в реальности всего получается только 2 формата даты: 1. Общепринятый - DD MM YYYY 2. Компьютерный - YYYY MM DD 01.02.2019 - это 01 Февраля 2019г. Видимо, надо будет создать 2 FormatSettings с разными форматами дат. Разделители, привести к чему-то единому через StringReplace. Всё остальное скорее всего будет не дата. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2019, 15:23 |
|
||
|
Перевести string в DateTime
|
|||
|---|---|---|---|
|
#18+
Valery_B, А вот Америка пишет - MM/DD/YYYY ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2019, 15:42 |
|
||
|
Перевести string в DateTime
|
|||
|---|---|---|---|
|
#18+
Я бы делал так: регулярным выражением посчитал бы количество цифр в начале строки, что бы определиться с форматом регуляркой поменял бы все не цифры на точку преобразование и отлов ошибок, конечно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2019, 15:48 |
|
||
|
Перевести string в DateTime
|
|||
|---|---|---|---|
|
#18+
MirnyiAtomрегуляркой поменял бы все не цифры на точкуБыло 2019-03-01T12:08:33.654-02:00 стало 2019.03.01.12.08.33.654.02.00 Удачного парсинга ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2019, 15:57 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39781009&tid=2039735]: |
0ms |
get settings: |
8ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
158ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
66ms |
get tp. blocked users: |
1ms |
| others: | 236ms |
| total: | 505ms |

| 0 / 0 |
