:: Visual Foxpro, Foxpro for DOS
Функция, обратная к DToS()
Goodwin
Автор

Сообщений: 3539
Откуда: Омск
Дата регистрации: 03.05.2006
Есть такое в семёрке?
Или опять ручками?
Ratings: 0 negative/0 positive
Re: Функция, обратная к DToS()
AleksM

Сообщений: 17881
Дата регистрации: 11.11.2003
Нету. Напиши свою.
?"{^"+TRANSFORM(DTOS(DATE()),"@R 9999-99-99")+"}"


------------------
Лучше переесть, чем недоспать.
Не спеши, а то успеешь.




Исправлено 1 раз(а). Последнее : AleksM, 19.03.07 11:56
Ratings: 0 negative/0 positive
Re: Функция, обратная к DToS()
Goodwin
Автор

Сообщений: 3539
Откуда: Омск
Дата регистрации: 03.05.2006
Тоже не шибко длинно. Спасибо.
Ratings: 0 negative/0 positive
Re: Функция, обратная к DToS()
AleksM

Сообщений: 17881
Дата регистрации: 11.11.2003
Мона ещё короче
?TRANSFORM(DTOS(DATE()),"@R {^9999-99-99")+"}"

PS Закрывающую фигурную скобку в TRANSFORM() почему то игнорирует.


------------------
Лучше переесть, чем недоспать.
Не спеши, а то успеешь.
Ratings: 0 negative/0 positive
Re: Функция, обратная к DToS()
Dik

Сообщений: 327
Откуда: Москва
Дата регистрации: 11.10.2000
Цитата:
Закрывающую фигурную скобку в TRANSFORM() почему то игнорирует.
Наверное потому, что пытается проинтерпретировать содержимое как дату (гипотеза)
Ratings: 0 negative/0 positive
Re: Функция, обратная к DToS()
piva

Сообщений: 18655
Откуда: Курган
Дата регистрации: 24.03.2004
Нет - просто выражение закончилось
? TRANSFORM(ttoc(Datetime(),1),"@R {^9999-99-99}")
? TRANSFORM(ttoc(Datetime(),1),"@R {^9999-99-99 99:99:99}")


------------------
Часто бывает так, что есть над чем задуматься, а нечем.
Ratings: 0 negative/0 positive
Re: Функция, обратная к DToS()
AleksM

Сообщений: 17881
Дата регистрации: 11.11.2003
Вадька, а где DTOS()?


------------------
Лучше переесть, чем недоспать.
Не спеши, а то успеешь.
Ratings: 0 negative/0 positive
Re: Функция, обратная к DToS()
piva

Сообщений: 18655
Откуда: Курган
Дата регистрации: 24.03.2004
Я принцип показал Ну на DTOS
?TRANSFORM(DTOS(DATE())+" ","@R {^9999-99-99}")
После выражения хоть один липовый символ приляпять надо


------------------
Часто бывает так, что есть над чем задуматься, а нечем.
Ratings: 0 negative/0 positive
Re: Функция, обратная к DToS()
AleksM

Сообщений: 17881
Дата регистрации: 11.11.2003
Ну так бы и грил. Но это всё равно что "}" дописать.


------------------
Лучше переесть, чем недоспать.
Не спеши, а то успеешь.




Исправлено 1 раз(а). Последнее : AleksM, 19.03.07 12:15
Ratings: 0 negative/0 positive
Re: Функция, обратная к DToS()
piva

Сообщений: 18655
Откуда: Курган
Дата регистрации: 24.03.2004
Ну что бы на будушее знать почему заключающие символы маски не попадают в выражение.
Ну приблизительно как ставить день недели в системных часах винды, тоже свои хитрости есть


------------------
Часто бывает так, что есть над чем задуматься, а нечем.
Ratings: 0 negative/0 positive
Re: Функция, обратная к DToS()
Goodwin
Автор

Сообщений: 3539
Откуда: Омск
Дата регистрации: 03.05.2006
Ну для полной чистоты надо писать

?eval(TRANSFORM(DTOS(DATE())+" ","@R {^9999-99-99}"))
Ratings: 0 negative/0 positive
Re: Функция, обратная к DToS()
AleksM

Сообщений: 17881
Дата регистрации: 11.11.2003
Ну эт само-собой ;)


------------------
Лучше переесть, чем недоспать.
Не спеши, а то успеешь.
Ratings: 0 negative/0 positive
Re: Функция, обратная к DToS()
Prudivus

Сообщений: 4283
Откуда: Кишинев
Дата регистрации: 14.12.2006
?CTOD("^"+TRANSFORM(DTOS(DATE()),"@R 9999-99-99"))



Исправлено 1 раз(а). Последнее : Prudivus, 19.03.07 18:27
Ratings: 0 negative/0 positive
Re: Функция, обратная к DToS()
AleksM

Сообщений: 17881
Дата регистрации: 11.11.2003
Я тебе даже больше скажу, т.е. меньше:
?CTOD(TRANSFORM(DTOS(DATE()),"@R ^9999-99-99"))


------------------
Лучше переесть, чем недоспать.
Не спеши, а то успеешь.




Исправлено 1 раз(а). Последнее : AleksM, 20.03.07 09:11
Ratings: 0 negative/0 positive
Re: Функция, обратная к DToS()
Goodwin
Автор

Сообщений: 3539
Откуда: Омск
Дата регистрации: 03.05.2006
Да. ctod() против eval() почти в два раза быстрее работает.
А в 15 байт решение запихать? ;)
Ratings: 0 negative/0 positive
Re: Функция, обратная к DToS()
Prudivus

Сообщений: 4283
Откуда: Кишинев
Дата регистрации: 14.12.2006
CTOD(TRAN(d,"@R ^9999-99-99"))
только 30, сорри ;)
Ratings: 0 negative/0 positive
Re: Функция, обратная к DToS()
vlladimir

Сообщений: 1
Дата регистрации: 26.04.2007
Может немного не по теме, извините если что
Как из поля Datetime вывести в гриде только время?
Ratings: 0 negative/0 positive
Re: Функция, обратная к DToS()
piva

Сообщений: 18655
Откуда: Курган
Дата регистрации: 24.03.2004
TTOC( ,2)


------------------
Часто бывает так, что есть над чем задуматься, а нечем.
Ratings: 0 negative/0 positive
Re: Функция, обратная к DToS()
korsak

Сообщений: 269
Откуда: Киров (Вятка)
Дата регистрации: 27.03.2007
Goodwin
Есть такое в семёрке?
Или опять ручками?
*************************************
proc STOD
* STOD() - converts any date string (almost) to a valid date expression
* An improvement on the CTOD() date function - much more user friendly.
* Xbase has a DTOS() return YYYYMMDD, but no function for converting YYYYMMDD
* (Created on a Saturday night after years of difficulty with dates!)
* 1994 Computer Applications Company  703-486-2222  Rick Shaddock

* Syntax:  STOD(<expC>)         Returns: MM/DD/YYYY format

* Supported formats for <expC> for 03/05/1994
* Mar 15, 94           15 Mar 94         
* Mar 15, 1994         15 Mar 1994         3/15/1994   15/3/1994   1994/3/15
* March 15, 94         15 March 94         03/15/94    15/03/94    94/03/15
* March 15, 1994       15 March 1994       03/15/1994  15/03/1994  1994/03/15
* March 15th 94        15th of March 94    3-15-94     15-3-94     1994-3-15
* March 15th 1994      15th of March 1994  3-15-1994   15-3-1994   1994-3-15
* March Fifteenth 94   Fifteenth March 94  03-15-94    15-03-94    94-03-15
* March Fifteenth 1994 Fifteenth of March  03-15-1994  15-03-1994  1994-03-15
* Mid March 94         940315              3.15.94     15.3.94     94.3.15
* Middle March 1994    19940315            3.15.1994   15.3.1994   1994.3.15
* March the 15th, 94   Ides of March 94    03.15.94    15.03.94    94.03.15
* March the 15th, 1994 Ides of March 1994  03.15.1994  15.03.1994  1994.03.15
 parameter cDate

* Process parameter
  private cDate, cWait, cMDY, cFormat
  if !type("cDate")=="C"
     m.cDate=all2str(m.cDate)
  endi

  m.cDate =alltrim(m.cDate)	    && Remove blanks
  m.cDate =upper(m.cDate)		    && Put the date string in all caps
  m.oDate =m.cDate			    && original date

* Variables
  m.cWait ='nowait'
  m.cMDY ='MDY'
  m.cYear =''
  m.cMonth=''
  m.cDay  =''
  m.cFormat =''
  m.dDate ={  .  .  }
  
* If blank
  if empty(m.cDate) or !isdigit(m.cDate)
     return {  .  .    }
  endif


* Convert all Separators to spaces for ease in trimming and consistency
  m.cDate =chrtr(m.cDate,'_\-/.,','      ')

  m.cDate =del_trim(m.cDate)

* Special cases - year undetermined
 m.cDate=mont2num(m.cDate)

  **Remove spaces
  m.cDate =del_trim(m.cDate)
  if occurs(" ",m.cDate)=0  && нет пробелов
       do case  
         case len(m.cDate) = 8 && 20050301
          m.cDate=left(m.cDate,4)+" "+subs(m.cDate,5,2)+" "+subs(m.cDate,7,2)
         case len(m.cDate) = 4 && 0503  месяц - год
          m.cDate=left(m.cDate,2)+" "+subs(m.cDate,3,2)
       endc
  endi


 do case  
    case occurs(" ",m.cDate) =1  && месяц-год
       m.cDay   ="1"
       m.cMonth =u_word(1,m.cDate)
       m.cYear  =u_word(2,m.cDate)

    case occurs(" ",m.cDate) >1  && с годом
 
       m.cDay   =u_word(1,m.cDate)
       m.cMonth =u_word(2,m.cDate)
       m.cYear  =u_word(3,m.cDate)
       if len(u_word(1,m.cDate))=4 && вид 2005 1 12 
            m.cDay   =u_word(3,m.cDate)
            m.cYear  =u_word(1,m.cDate)
       endi

 endc


* Diagnostic window
*	wait window m.cDate +'=' +cFormat &cWait

* Construct the date
    m.cYear=allt(m.cYear)
    if len(m.cYear)<3
       if val(m.cYear)>80
          m.cYear= "19"+right("00"+m.cYear,2)
       else
          m.cYear= "20"+right("00"+m.cYear,2)
       endi
    endi

  errorinfo=type("cday")
  m.cDate = m.cDay+"." +m.cMonth +"." +m.cYear
*  =ww(m.cDate)
  dDate =ctod(m.cDate)			    && convert to a date variable

* Finish
 return dDate



Исправлено 1 раз(а). Последнее : korsak, 26.04.07 08:22
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 15 (Гостей: 15)

© 2000-2024 Fox Club 
Яндекс.Метрика