ASP下经常用的字符串等函数参考资料

时间:2021-07-29 02:34:56

1.函数 array() 
功能:创建一个数组变量 
格式:array(list) 
参数:list 为数组变量中的每个数值列,中间用逗号间隔 
例子: 

结果: i 被赋予为数组 

2.函数 Cint() 
功能:将一表达式/其它类型的变量转换成整数类型(int) 
格式:Cint(expression) 
参数:expression 是任何有效的表达式/其它类型的变量 
例子: 
    
结果: 236 
函数Cint()将字符"234"转换 成整数234.如果表达式为空, 或者无效时,返回值为0; 

3.函数: Creatobject() 
功能:创建及返回一个ActiveX对象. 
格式:Creatobject(obname) 
参数:obname 是对象的名称 
例子: 
    
结果: 
4.函数 Cstr() 
功能:将一表达式/其它类型的变量转换成字符类型(string) 
格式:Cstr(expression) 
参数:expression是任何有效的表达式/其它类型的变量 
例子: 
    
结果:函数Cstr()将整数 5 转换 成字符"5". 

5.函数 Date() 
功能:返回当前系统(server端)的日期 
格式:Date() 
参数:无 
例子: 
结果:05/10/00 

6.函数 Dateadd() 
功能:计算某个指定的时间和 
格式:dateadd(timeinterval,number,date) 
参数:timeinterval是时间单位(月,日..); number是时间间隔值,date是时间始点. 
例子: 


   
结果: 
11/4/99 
3:34:45 PM 
其中 
"m" = "month"; 
"d" = "day"; 
如果是currentDate 格式,则, 
"h" = "hour";  
"s" = "second";  

7.函数 Datediff() 
功能:计算某量个指定的时间差 
格式:datediff(timeinterval,date1,date2[,firstdayofweek[,firstdayofyear]]) 
参数:timeinterval 是时间单位; date1,date2是有效的日期表达式,firstdayofweek,firstdayofyear 是任意选项. 
例子: 
    
结果:There are 150 days to millenium from 8/4/99.  

8.函数 day() 
功能:返回一个整数值,对应于某月的某日 
格式:day(date) 
参数:date是一个有效的日期表达式; 
例子: 
结果:4 

9.函数 formatcurrency() 
功能:转换成货币格式 
格式:formatcurrency(expression [,digit[,leadingdigit[,paren[,groupdigit]]]]) 
参数:expression 是有效的数字表达式;digit表示小数点后的位数;leadingdigit,paren,groupdigit是任意选项. 
例子:  
结果:$34.35 

10.函数 Formatdatetime() 
功能:格式化日期表达式/变量 
格式:formatdatetime(date[,nameformat]) 
参数:date为有效的日期表达式/变量;nameformat是指定的日期格式常量名称. 
例子: 
结果:Wednesday,August 04,1999 


11.函数 formatnumber() 
功能:格式化数字表达式/变量 
格式:formatnumbe(expression [,digit[,leadingdigit[,paren[,groupdigit]]]]) 
参数:express为有效的数字表达式, digit表示小数点后的位数;leadingdigit,paren,groupdigit是任意选项 
例子: 
    
结果: 23.222 

12.函数 formatpercent() 
功能:格式化百分数表达式/变量 
格式:formatnumber(expression [,digit [,leading [,paren[,groupdigit]]]]) 
参数:expression 是有效的数字表达式,digit表示小数点后的位数;leadingdigit,paren,groupdigit是任意选项 
例子: 
    
结果: 45.233 

13.函数: hour() 
功能:返回一个数值,对应于的指定时间. 
格式:hour(time) 
参数:time对应于的指定时间. 
例子: 
    
结果:16 (24 小时制) 

14.函数 instr() 
功能:返回一个数值,对应于某字符(串)在另一字符串中的位置. 
格式:instr([start,]strtobesearched,strsearchfor [,compare]) 
参数:start(任选)是从第start位寻找,strtobesearched 是被搜索的字符串,strsearchfor是被寻找的目标.compare是任意选项 
例子: 
    
结果:9,(字符"a"在strtext字符串的第九位) 

15.函数 instrrev() 
功能:返回一个数值,对应于某字符(串)在另一字符串中的位置(从后面起开始寻找). 
格式:instrrev([start,] strtobesearched,strsearchfor[,compare]) 
参数:参考 instr(), 
例子: 

结果:13, 字串"s"是strtext的第13个字符(从后面起开始寻找) 

16.函数 int() 
功能:数字取整 
格式:int(number) 
参数:number 是任何有效的数字表达式/其它类型的变量 
例子: 

结果:322 (如果用Cint()则结果是323) 

17.函数 isarray() 
功能:返回一个布尔值,判断变量是否为数组. 
格式: isarray(name) 
参数:name是变量名称 
例子: 
    
结果:false 

18.函数 isdate() 
功能:返回一个布尔值,判断变量是否为日期变量. 
格式:isdate(expression) 
参数:expression 是任意的变量. 
例子: 
结果:true 

19.函数 isempty() 
功能:返回一个布尔值,判断变量是否为空. 
格式:isempty(expression) 
参数:expression 是任意的变量. 
例子: 

结果:true 

20.函数 isnull() 
功能:返回一个布尔值,判断变量是否包含非法的数据. 
格式:isnull(expression) 
参数:expression 是任意的变量. 
例子: 

结果:false 

21.函数 Isnumeric() 
功能:返回一个布尔值,判断变量是否为数字变量,或者是可以转换成数字的其它变量. 
格式:isnumeric(expression) 
参数:expression 是任意的变量. 
例子: 
    
结果: true. 

22.函数 Isobject() 
功能:返回一个布尔值,判断变量是否为对象的变量, 
格式:isobject(expression) 
参数:expression 是任意的变量. 
例子: 
    
结果: true 

23.函数: Lbound() 
功能:返回一个数组的下界. 
格式:Lbound(arrayname[,dimension]) 
参数:arrayname 是数组变量,dimension 是任意项 
例子: 
    
结果:0 
24.函数 Lcase() 
功能:将一字符类型变量的字符全部变换小写字符. 
格式:Lcase(string) 
参数:string是字串变量 
例子: 
    
结果:this is lcase! 

25.函数 left() 
功能:截取一个字符串的前部分; 
格式:left(string,length) 
参数:string字符串,length截取的长度. 
例子:  
结果:this i 

26.函数 len() 
功能:返回字符串长度或者变量的字节长度 
格式:len(string |varname) 
参数:string字符串;varname任意的变量名称 
例子: 

结果:15 

27.函数 ltrim() 
功能:去掉字符串前的空格. 
格式:ltrim(string) 
参数:string 字串. 
例子:  
结果:Today 

29.函数 minute() 
功能:返回一数值, 表示分钟 
格式:minute(time) 
参数: time是时间变量 
例子: 
结果:23 

30.函数 month() 
功能:返回一数值, 表示月份 
格式:month(time) 
参数:time是日期变量 
例子: 
结果:9 

31.函数 monthname() 
功能:返回月份的字符串(名称). 
格式:Monthname(date [,abb]) 
参数:date是日期变量,abb=true时 则月份的缩写, 
例子: 
    
结果:April 
32.函数 Now() 
功能:返回系统的当前时间和日期. 
格式:now() 
参数:无 
例子: 
    
结果: 05/10/00 8:45:32 pm 

33.函数: replace() 
功能:在字串中查找,替代指定的字串. 
格式:replace(strtobesearched,strsearchfor,strreplacewith  

[,start[,count[,compare]]]) 
参数:strtobesearched是字串; strsearchfor是被查找的子字串;strreplacewith  

是用来替代的子字串.start,count,compare 是任意选项. 
例子: 
    
结果:this is an orange. 

34.函数 right() 
功能:截取一个字符串的后部分 
格式:right(string,length) 
参数:string字符串,length截取的长度. 
例子: 
    
结果:st! 

35.函数 rnd() 
功能:返回一个随机数值 
格式:rnd[(number)] 
参数:number是任意数值. 
例子: 

结果:0/1数值之一,无randomize(), 则不能产生随机数. 
36.函数round() 
功能:完整数值 
格式:round(expression[,numright]) 
参数:expression数字表达式;numright任意选项. 
例子: 

结果: 12 
37.函数 rtrim() 
功能:去掉字符串后的空格. 
格式:rtrim(string) 
参数:string 是字串 
例子: 
    
结果:this is a test! 

38.函数 second() 
功能:返回一个整数值. 
格式:second(time) 
参数:time是一个有效的时间表达式; 
例子: 
结果:30 

39.函数 strReverse() 
功能:返回与原字串排列逆向的字串. 
格式:strreverse(string) 
参数:string是字串 
例子: 


-------------------------------------------------------------------------------- 

下面为带例子的: 

Array()  
FUNCTION: 返回一个数组  
SYNTAX: Array(list)  
ARGUMENTS: 字符,数字均可  
EXAMPLE: <% 
Dim myArray() 
For i = 1 to 7 
Redim Preserve myArray(i) 
myArray(i) = WeekdayName(i) 
Next 
%>  
RESULT: 建立了一个包含7个元素的数组myArray 
myArray("Sunday","Monday", ... ... "Saturday")  

CInt()  
FUNCTION: 将一个表达式转化为数字类型  
SYNTAX: CInt(expression)  
ARGUMENTS: 任何有效的字符均可  
EXAMPLE: <% 
f = "234" 
response.write cINT(f) + 2 
%>  
RESULT: 236 
转化字符"234"为数字"234",如果字符串为空,则返回0值  

CreateObject()  
FUNCTION: 建立和返回一个已注册的ACTIVEX组件的实例。  
SYNTAX: CreateObject(objName)  
ARGUMENTS: objName 是任何一个有效、已注册的ACTIVEX组件的名字.  
EXAMPLE: <% 
Set con = Server.CreateObject("ADODB.Connection") 
%>  
RESULT:  

CStr()  
FUNCTION: 转化一个表达式为字符串.  
SYNTAX: CStr(expression)  
ARGUMENTS: expression 是任何有效的表达式。  
EXAMPLE: <% 
s = 3 + 2 
response.write "The result is: " & cStr(s) 
%>  
RESULT: 转化数字“5”为字符“5”。  

Date()  
FUNCTION: 返回当前系统日期.  
SYNTAX: Date()  
ARGUMENTS: None.  
EXAMPLE: <%=Date%>  
RESULT: 8/4/99  

DateAdd()  
FUNCTION: 返回一个被改变了的日期。  
SYNTAX: DateAdd(timeinterval,number,date)  
ARGUMENTS: timeinterval is the time interval to add; number is amount of  
time intervals to add; and date is the starting date.  
EXAMPLE: <% 
currentDate = #8/4/99# 
newDate = DateAdd("m",3,currentDate) 
response.write newDate 
%> 

<% 
currentDate = #12:34:45 PM# 
newDate = DateAdd("h",3,currentDate) 
response.write newDate 
%>  
RESULT: 11/4/99 
3:34:45 PM 

"m" = "month"; 
"d" = "day"; 

If currentDate is in time format then, 
"h" = "hour";  
"s" = "second";  

DateDiff()  
FUNCTION: 返回两个日期之间的差值 。  
SYNTAX: DateDiff(timeinterval,date1,date2 [, firstdayofweek ][,  
firstweekofyear]])  
ARGUMENTS: timeinterval 表示相隔时间的类型,如“M“表示“月”。  
EXAMPLE: <% 
fromDate = #8/4/99# 
toDate = #1/1/2000# 
response.write "There are " & _ 
DateDiff("d",fromDate,toDate) & _ 
" days to millenium from 8/4/99." 
%>  
RESULT: 从8/4/99 到2000年还有 150 天.  

Day()  
FUNCTION: 返回一个月的第几日 .  
SYNTAX: Day(date)  
ARGUMENTS: date 是任何有效的日期。  
EXAMPLE: <%=Day(#8/4/99#)%>  
RESULT: 4  

FormatCurrency()  
FUNCTION: 返回表达式,此表达式已被格式化为货币值  
SYNTAX: FormatCurrency(Expression [, Digit ][, LeadingDigit ][, Paren ][,  
GroupDigit]]]])  
ARGUMENTS: Digit 指示小数点右侧显示位数的数值。默认值为 -1,指示使用的是 
计算机的区域设置; LeadingDigit 三态常数,指示是否显示小数值小数点前面的 
零。  
EXAMPLE: <%=FormatCurrency(34.3456)%>  
RESULT: $34.35  

FormatDateTime()  
FUNCTION: 返回表达式,此表达式已被格式化为日期或时间  
SYNTAX: FormatDateTime(Date, [, NamedFormat])  
ARGUMENTS: NamedFormat 指示所使用的日期/时间格式的数值,如果省略,则使用  
vbGeneralDate.  
EXAMPLE: <%=FormatDateTime("08/4/99", vbLongDate)%>  
RESULT: Wednesday, August 04, 1999  

FormatNumber()  
FUNCTION: 返回表达式,此表达式已被格式化为数值.  
SYNTAX: FormatNumber(Expression [, Digit ][, LeadingDigit ][, Paren ][,  
GroupDigit]]]])  
ARGUMENTS: Digit 指示小数点右侧显示位数的数值。默认值为 -1,指示使用的是 
计算机的区域设置。; LeadingDigit i指示小数点右侧显示位数的数值。默认值为 - 
1,指示使用的是计算机的区域设置。; Paren 指示小数点右侧显示位数的数值。默认 
值为 -1,指示使用的是计算机的区域设置。; GroupDigit i指示小数点右侧显示位数 
的数值。默认值为 -1,指示使用的是计算机的区域设置。.  
EXAMPLE: <%=FormatNumber(45.324567, 3)%>  
RESULT: 45.325  

FormatPercent()  
FUNCTION: 返回表达式,此表达式已被格式化为尾随有 % 符号的百分比(乘以  
100 )。 (%)  
SYNTAX: FormatPercent(Expression [, Digit ][, LeadingDigit ][, Paren ][,  
GroupDigit]]]])  
ARGUMENTS: 同上.  
EXAMPLE: <%=FormatPercent(0.45267, 3)%>  
RESULT: 45.267%  

Hour()  
FUNCTION: 以24时返回小时数.  
SYNTAX: Hour(time)  
ARGUMENTS:  
EXAMPLE: <%=Hour(#4:45:34 PM#)%>  
RESULT: 16 
(Hour has been converted to 24-hour system)  

Instr()  
FUNCTION: 返回字符或字符串在另一个字符串中第一次出现的位置.  
SYNTAX: Instr([start, ] strToBeSearched, strSearchFor [, compare])  
ARGUMENTS: Start为搜索的起始值,strToBeSearched接受搜索的字符串  
strSearchFor要搜索的字符.compare比较方式(详细见ASP常数)  
EXAMPLE: <% 
strText = "This is a test!!" 
pos = Instr(strText, "a") 
response.write pos 
%>  
RESULT: 9  

InstrRev()  
FUNCTION: 同上,只是从字符串的最后一个搜索起  
SYNTAX: InstrRev([start, ] strToBeSearched, strSearchFor [, compare])  
ARGUMENTS: 同上.  
EXAMPLE: <% 
strText = "This is a test!!" 
pos = InstrRev(strText, "s") 
response.write pos 
%>  
RESULT: 13 


Int()  
FUNCTION: 返回数值类型,不四舍五入,注意取值是不大于它的整数。  
SYNTAX: Int(number)  
ARGUMENTS:  
EXAMPLE: <%=INT(32.89)%> <%=int(-3.33)%> 
RESULT: 32 -4 

IsArray()  
FUNCTION: 判断一对象是否为数组,返回布尔值 .  
SYNTAX: IsArray(name)  
ARGUMENTS:  
EXAMPLE: <% 
strTest = "Test!" 
response.write IsArray(strTest) 
%>  
RESULT: False  

IsDate()  
FUNCTION: 判断一对象是否为日期,返回布尔值  
SYNTAX: IsDate(expression)  
ARGUMENTS: expression is any valid expression.  
EXAMPLE: <% 
strTest = "8/4/99" 
response.write IsDate(strTest) 
%>  
RESULT: True  

IsEmpty()  
FUNCTION: 判断一对象是否初始化,返回布尔值.  
SYNTAX: IsEmpty(expression)  
ARGUMENTS:  
EXAMPLE: <% 
Dim i 
response.write IsEmpty(i) 
%>  
RESULT: True  

IsNull()  
FUNCTION: 判断一对象是否为空,返回布尔值.  
SYNTAX: IsNull(expression)  
ARGUMENTS:  
EXAMPLE: <% 
Dim i 
response.write IsNull(i) 
%>  
RESULT: False  

IsNumeric()  
FUNCTION: 判断一对象是否为数字,返回布尔值.  
SYNTAX: IsNumeric(expression)  
ARGUMENTS:  
EXAMPLE: <% 
i = "345" 
response.write IsNumeric(i) 
%>  
RESULT: True 
就算数字加了引号,ASP还是认为它是数字。  

IsObject()  
FUNCTION: 判断一对象是否为对象,返回布尔值.  
SYNTAX: IsObject(expression)  
ARGUMENTS:  
EXAMPLE: <% 
Set con = Server.CreateObject("ADODB.Connection") 
response.write IsObject(con) 
%>  
RESULT: True  

LBound()  
FUNCTION: 返回指定数组维的最小可用下标.  
SYNTAX: Lbound(arrayname [, dimension])  
ARGUMENTS: ; dimension 指明要返回哪一维下界的整数。使用 1 表示第一维,2  
表示第二维,以此类推。如果省略 dimension 参数,默认值为 1.  
EXAMPLE: <% 
i = Array("Monday","Tuesday","Wednesday") 
response.write LBound(i) 
%>  
RESULT: 0  

LCase()  
FUNCTION: 返回字符串的小写形式  
SYNTAX: Lcase(string)  
ARGUMENTS: string is any valid string expression.  
EXAMPLE: <% 
strTest = "This is a test!" 
response.write LCase(strTest) 
%>  
RESULT: this is a test!  

Left()  
FUNCTION: 返回字符串左边第length个字符以前的字符(含第length个字符).  
SYNTAX: Left(string, length)  
ARGUMENTS:  
EXAMPLE: <% 
strTest = "This is a test!" 
response.write Left(strTest, 3) 
%>  
RESULT: Thi  

Len()  
FUNCTION: 返回字符串的长度.  
SYNTAX: Len(string | varName)  
ARGUMENTS:  
EXAMPLE: <% 
strTest = "This is a test!" 
response.write Len(strTest) 
%>  
RESULT: 15  

LTrim()  
FUNCTION: 去掉字符串左边的空格.  
SYNTAX: LTrim(string)  
ARGUMENTS:  
EXAMPLE: <% 
strTest = " This is a test!" 
response.write LTrim(strTest) 
%>  
RESULT: This is a test!  

Mid()  
FUNCTION: 返回特定长度的字符串(从start开始,长度为length).  
SYNTAX: Mid(string, start [, length])  
ARGUMENTS:  
EXAMPLE: <% 
strTest = "This is a test! Today is Monday." 
response.write Mid(strTest, 17, 5) 
%>  
RESULT: Today  

Minute()  
FUNCTION: 返回时间的分钏.  
SYNTAX: Minute(time)  
ARGUMENTS:  
EXAMPLE: <%=Minute(#12:45:32 PM#)%>  
RESULT: 45  

Month()  
FUNCTION: 返回日期.  
SYNTAX: Month(date)  
ARGUMENTS: date is any valid date expression.  
EXAMPLE: <%=Month(#08/04/99#)%>  
RESULT: 8  

MonthName()  
FUNCTION: Returns a string identifying the specified month.  
SYNTAX: MonthName(month, [, Abb])  
ARGUMENTS: month is the numeric representation for a given month; Abb  
(optional) is a boolean value used to display month abbreviation. True  
will display the abbreviated month name and False (default) will not show  
the abbreviation.  
EXAMPLE: <%=MonthName(Month(#08/04/99#))%>  
RESULT: August  

Now()  
FUNCTION: Returns the current system date and time.  
SYNTAX: Now()  
ARGUMENTS: None  
EXAMPLE: <%=Now%>  
RESULT: 8/4/99 9:30:16 AM  

Replace()  
FUNCTION: Returns a string in which a specified sub-string has been  
replaced with another substring a specified number of times.  
SYNTAX: Replace(strToBeSearched, strSearchFor, strReplaceWith [, start  
][, count ][, compare]]])  
ARGUMENTS: strToBeSearched is a string expression containing a sub- 
string to be replaced; strSearchFor is the string expression to search for  
within strToBeSearched; strReplaceWith is the string expression to replace  
sub-string strSearchFor; start (optional) is the numeric character  
position to begin search; count (optional) is a value indicating the  
comparision constant.  
EXAMPLE: <%  
strTest = "This is an apple!" 
response.write Replace(strTest, "apple", "orange") 
%>  
RESULT: This is an orange!  

Right()  
FUNCTION: 返回字符串右边第length个字符以前的字符(含第length个字符).  
SYNTAX: Right(string, length)  
ARGUMENTS: .  
EXAMPLE: <%  
strTest = "This is an test!" 
response.write Right(strTest, 3) 
%>  
RESULT: st!  

Rnd()  
FUNCTION: 产生一个随机数.  
SYNTAX: Rnd [ (number) ]  
ARGUMENTS:  
EXAMPLE: <% 
Randomize() 
response.write RND() 
%>  
RESULT: 任何一个在0 到 1 之间的数  

Round()  
FUNCTION: 返回按指定位数进行四舍五入的数值.  
SYNTAX: Round(expression [, numRight])  
ARGUMENTS: numRight数字表明小数点右边有多少位进行四舍五入。如果省略,则  
Round 函数返回整数.  
EXAMPLE: <% 
i = 32.45678 
response.write Round(i) 
%>  
RESULT: 32  

Rtrim()  
FUNCTION: 去掉字符串右边的字符串.  
SYNTAX: Rtrim(string)  
ARGUMENTS:  
EXAMPLE: <% 
strTest = "This is a test!! " 
response.write RTrim(strTest) 
%>  
RESULT: This is a test!!  

Second()  
FUNCTION: 返回秒.  
SYNTAX: Second(time)  
ARGUMENTS: .  
EXAMPLE: <%=Second(#12:34:28 PM#)%>  
RESULT: 28  

StrReverse()  
FUNCTION: 反排一字符串  
SYNTAX: StrReverse(string)  
ARGUMENTS:  
EXAMPLE: <% 
strTest = "This is a test!!" 
response.write StrReverse(strTest) 
%>  
RESULT: !!tset a si sihT  

Time()  
FUNCTION: 返回系统时间.  
SYNTAX: Time()  
ARGUMENTS: .  
EXAMPLE: <%=Time%>  
RESULT: 9:58:28 AM  

Trim()  
FUNCTION: 去掉字符串左右的空格.  
SYNTAX: Trim(string)  
ARGUMENTS: string is any valid string expression.  
EXAMPLE: <% 
strTest = " This is a test!! " 
response.write Trim(strTest) 
%>  
RESULT: This is a test!!  

UBound()  
FUNCTION: 返回指定数组维数的最大可用下标.  
SYNTAX: Ubound(arrayname [, dimension])  
ARGUMENTS: ; dimension (optional) 指定返回哪一维上界的整数。1 表示第一 
维,2 表示第二维,以此类推。如果省略 dimension 参数,则默认值为 1.  
EXAMPLE: <% 
i = Array("Monday","Tuesday","Wednesday") 
response.write UBound(i) 
%>  
RESULT: 2  

UCase()  
FUNCTION: 返回字符串的大写形式.  
SYNTAX: UCase(string)  
ARGUMENTS:  
EXAMPLE: <% 
strTest = "This is a test!!" 
response.write UCase(strTest) 
%>  
RESULT: THIS IS A TEST!!  

VarType()  
FUNCTION: 返回指示变量子类型的值  
SYNTAX: VarType(varName)  
ARGUMENTS:  
EXAMPLE: <% 
i = 3 
response.write varType(i) 
%>  
RESULT: 2(数字)详见"asp常数"  

WeekDay()  
FUNCTION: 返回在一周的第几天.  
SYNTAX: WeekDay(date [, firstdayofweek])  
ARGUMENTS: .  
EXAMPLE: <% 
d = #8/4/99# 
response.write Weekday(d) 
%>  
RESULT: 4(星期三)  

WeekDayName()  
FUNCTION: 返回一周第几天的名字.  
SYNTAX: WeekDayName(weekday [, Abb ][, firstdayofweek]])  
ARGUMENTS: Abb可选。Boolean 值,指明是否缩写表示星期各天的名称。如果省 
略, 默认值为 False,即不缩写星期各天的名称.firstdayofweek指明星期第一天的 
数值  
EXAMPLE: <% 
d = #8/4/99# 
response.write WeekdayName(Weekday(d)) 
%>  
RESULT: Wednesday  

Year()  
FUNCTION: 返回当前的年份.  
SYNTAX: Year(date)  
ARGUMENTS:  
EXAMPLE: <%=Year(#8/4/99#)%>  
RESULT: 1999