опять про дату, перевести текст "20050831" в формат даты

scorp_alexandr
Дата: 01.09.2005 12:35:40
текст вида "20050831" как в дату перевести?

я пока думаю вставить "/" и потом CDate("2005/08/31")

вставлять "/" не катит, может что покороче есть?
scorp_alexandr
Дата: 01.09.2005 12:36:37
да, на ?format("20050101", "yyyymmdd") пишет переполнение
Программист-Любитель
Дата: 01.09.2005 12:37:00
Три раза MID() написать и один CDate().
scorp_alexandr
Дата: 01.09.2005 12:43:45
Программист-Любитель
Три раза MID() написать и один CDate().


?cdate(mid("20050101",1,4) & "/" & mid("20050101",5,2) & "/" & mid("20050101",7,2))

ну пусть так будет :)
спасибо за идею
АлексейК
Дата: 01.09.2005 12:48:08
можно и надежно так

Sub tstst()
Dim txtdate As String
txtdate = "20050831"
Debug.Print DateSerial(Left(txtdate, 4), Mid(txtdate, 5, 2), Mid(txtdate, 7, 2))

End Sub
Программист-Любитель
Дата: 01.09.2005 12:51:56
Способ АлексеяК самый правильный.
scorp_alexandr
Дата: 01.09.2005 12:51:59
спасибо
выбрал
Function ConvertTxtDate(TXTDate As String) As Date
ConvertTxtDate = DateSerial(Left(TXTDate, 4), Mid(TXTDate, 5, 2), Mid(TXTDate, 7, 2))
End Function
scorp_alexandr
Дата: 01.09.2005 13:09:06
короче щас поступило предложение сделать так:
cdate(format("20050101", "####/##/##"))

воистину, нет предела у программерской мысли!
АлексейК
Дата: 01.09.2005 13:17:34
хорошо когда код не зависит от региональных настроек
АлексейК
Дата: 01.09.2005 13:25:03
специально проверил
cdate(format("20050101", "####/##/##"))

работает хорошо даже если задать локальный формат yyyy/dd/mm