标题：date函数
简介
DATE（year,month,day）
Year 参数 year 可以为一到四位数字。Microsoft Excel 将根据所使用的日期系统来解释 year 参数。默认情况下，Microsoft Excel for Windows 将使用 1900 日期系统，而 Microsoft Excel for Macintosh 将使用 1904 日期系统。
DATE函数也适用于其他各种的编程语句。
对于 1900 年日期系统
如果 year 位于 0（零）到 1899（包含）之间，则 Excel 会将该值加上 1900，再计算年份。例如：DATE(108,1,2) 将返回 2008 年 1 月 2 日 (1900+108)。如果 year 位于 1900 到 9999（包含）之间，则 Excel 将使用该数值作为年份。例如：DATE(2008,1,2) 将返回 2008 年 1 月 2 日。如果 year 小于 0 或大于等于 10000，则Excel将返回错误值 #NUM!。
对于 1904 年日期系统
如果 year 位于 4 到 1899（含）之间，则 Excel 会将该值加上 1900，再计算年份。例如：DATE(108,1,2) 将返回 2008 年 1 月 2 日（1900+108）。如果 year 位于 1904 到 9999（含）之间，则 Excel 将使用该数值作为年份。例如：DATE(2008,1,2) 将返回 2008 年 1 月 2 日。如果 year 小于 4 或大于等于 10000，或者位于 1900 到 1903（含）之间，则 Excel 将返回错误值 #NUM!。
Month 代表每年中月份的数字。如果所输入的月份大于 12，将从指定年份的一月份开始往上加算。例如：DATE(2008,14,2) 返回代表 2009 年 2 月 2 日的序列号。
Day 代表在该月份中第几天的数字。如果 day 大于该月份的最大天数，则将从指定月份的第一天开始往上累加。例如，DATE(2008,1,35) 返回代表 2008 年 2 月 4 日的序列号。
说明
Microsoft Excel 可将日期存储为可用于计算的序列号。默认情况下，1900 年 1 月 1 日的序列号是 1 而 2008 年 1 月 1 日的序列号是 39448，这是因为它距 1900 年 1 月 1 日有 39448 天。Microsoft Excel for the Macintosh 使用另外一个默认日期系统。 函数 DATE 在年、月、日为变量的公式中非常有用。 示例
如果您将示例复制到空白工作表中，可能会更易于理解该示例。
操作方法
创建空白工作簿或工作表。 请在“帮助”主题中选取示例。不要选取行或列标题。 从帮助中选取示例。按 Ctrl+C。 在工作表中，选中单元格 A1，再按 Ctrl+V。 若要在查看结果和查看返回结果的公式之间切换，请按 Ctrl+`（重音符），或在“工具”菜单上，指向“公式审核”，再单击“公式审核模式”。 
​年
月
日
​​2008
1
1
​公式：
=date(b2,c2,d2)
​​​结果
返回上述日期的序列号使用1900日期(2008-1-1或39448)
​​​​​​​​注释:若要将日期形式转换为数字形式，请选中单元格，在“格式”菜单上单击“单元格”，再单击“数字”选项卡，然后单击“分类”框中的“常规”。
在其它程序设计中（如:vfp,vb,C等语言），date函数作用为取得当前系统日期，且不需要参数。
php中date函数
date -- 格式化一个本地时间/日期
C语言中的时间函数
struct tm *localtime( const time_t *timer ); 
struct tm *_localtime32( const __time32_t *timer); 
struct tm *_localtime64( const __time64_t *timer );　
在struct tm结构体中有相应的时间信息。
其MSDN中的结构属性为:
​​tm_hour
Hours since midnight (0–23)
tm_isdst
Positive if daylight saving time is in effect; 0 if daylight saving time is not in effect; negative if status of daylight saving time is unknown. The C run-time library assumes the United States' rules for implementing the calculation of Daylight Saving Time (DST). 
tm_mday
Day of month (1–31)
tm_min
Minutes after hour (0–59)
tm_mon
Month (0–11; January = 0)
tm_sec
Seconds after minute (0–59)
tm_wday
Day of week (0–6; Sunday = 0)
tm_yday
Day of year (0–365; January 1 = 0)
tm_year
Year (current year minus 1900)
操作方法
string date ( string format [, int timestamp] )
返回将整数 timestamp 按照给定的格式字串而产生的字符串。如果没有给出时间戳则使用本地当前时间。换句话说，timestamp 是可选的，默认值为 time()。 
提示: 自 PHP 5.1.0 起有几个有用的常量可用作标准的日期/时间格式来指定 format 参数。 
注: 有效的时间戳典型范围是格林威治时间1901 年 12 月 13 日 20:45:54 到 2038 年 1 月 19 日 03:14:07。（此范围符合 32 位有符号整数的最小值和最大值）。不过在 PHP 5.1 之前此范围在某些系统（如 Windows）中限制为从 1970 年 1 月 1 日到 2038 年 1 月 19 日。 
注: 要将字符串表达的时间转换成时间戳，应该使用 strtotime()。此外一些数据库有一些函数将其时间格式转换成时间戳（例如 MySQL 的 UNIX_TIMESTAMP函数）。 
表格 1. 格式字串可以识别以下 format参数的字符串
format 字符
说明
返回值例子
日
---
---
d
月份中的第几天，有前导零的 2 位数字
01 到 31
D
星期中的第几天，文本表示，3 个字母
Mon 到 Sun
j
月份中的第几天，没有前导零
1 到 31
l（“L”的小写字母）
星期几，完整的文本格式
Sunday 到 Saturday
N
ISO-8601 格式数字表示的星期中的第几天（PHP 5.1.0 新加）
1（表示星期一）到 7（表示星期天）
S
每月天数后面的英文后缀，2 个字符
st，nd，rd 或者 th。可以和 j 一起用
w
星期中的第几天，数字表示
0（表示星期天）到 6（表示星期六）
z
年份中的第几天
0 到 366
星期
---
---
W
ISO-8601 格式年份中的第几周，每周从星期一开始（PHP 4.1.0 新加的）
例如：42（当年的第 42 周）
月
---
---
F
月份，完整的文本格式，例如 January 或者 March
January 到 December
m
数字表示的月份，有前导零
01 到 12
M
三个字母缩写表示的月份
Jan 到 Dec
n
数字表示的月份，没有前导零
1 到 12
t
给定月份所应有的天数
28 到 31
年
---
---
L
是否为闰年
如果是闰年为 1，否则为 0
o
ISO-8601 格式年份数字。这和 Y 的值相同，只除了如果 ISO 的星期数（W）属于前一年或下一年，则用那一年。（PHP 5.1.0 新加）
Examples: 1999 or 2003
Y
4 位数字完整表示的年份
例如：1999 或 2003
y
2 位数字表示的年份
例如：99 或 03
时间
---
---
a
小写的上午和下午值
am 或 pm
A
大写的上午和下午值
AM 或 PM
B
Swatch Internet 标准时
000 到 999
g
小时，12 小时格式，没有前导零
1 到 12
G
小时，24 小时格式，没有前导零
0 到 23
h
小时，12 小时格式，有前导零
01 到 12
H
小时，24 小时格式，有前导零
00 到 23
i
有前导零的分钟数
00 到 59>
s
秒数，有前导零
00 到 59>
时区
---
---
e
时区标识（PHP 5.1.0 新加）
例如：UTC，GMT，Atlantic/Azores
I
是否为夏令时
如果是夏令时为 1，否则为 0
O
与格林威治时间相差的小时数
例如：+0200
T
本机所在的时区
例如：EST，MDT（【译者注】在 Windows 下为完整文本格式，例如“Eastern Standard Time”，中文版会显示“中国标准时间”）。
Z
时差偏移量的秒数。UTC 西边的时区偏移量总是负的，UTC 东边的时区偏移量总是正的。
-43200 到 43200
完整的日期/时间
---
---
c
ISO 8601 格式的日期（PHP 5 新加）
2004-02-12T15:19:21+00:00
r
RFC 822 格式的日期
例如：Thu, 21 Dec 2000 16:01:07 +0200
U
从 Unix 纪元（January 1 1970 00:00:00 GMT）开始至今的秒数
参见 time()
格式字串中不能被识别的字符将原样显示。Z 格式在使用 gmdate()时总是返回 0。 
例子 1. date()例子
<?php// 设定要用的默认时区。自 PHP 5.1 可用date_default_timezone_set('UTC');// 输出类似：Mondayecho date("l");// 输出类似：Monday 15th of August 2005 03:12:46 PMecho date('l dS \of F Y h:i:s A');// 输出：July 1, 2000 is on a Saturdayecho "July 1, 2000 is on a " . date("l", mktime(0, 0, 0, 7, 1, 2000));/* 在格式参数中使用常量 */// 输出类似：Mon, 15 Aug 2005 15:12:46 UTCecho date(DATE_RFC822);// 输出类似：2000-07-01T00:00:00+0000echo date(DATE_ATOM, mktime(0, 0, 0, 7, 1, 2000));?> 
在格式字串中的字符前加上反斜线来转义可以避免它被按照上表解释。如果加上反斜线后的字符本身就是一个特殊序列，那还要转义反斜线。
PHP中的date函数
在php中，date的应用也很广泛。date()函数返回将整数 timestamp 按照给定的格式字串而产生的字符串。如果没有给出时间戳则使用本地当前时间。换句话说timestamp是可选的，而它的默认值为 time()。
string date( string format [, int timestamp] )
有效的时间戳典型范围是格林威治时间 1901 年 12 月 13 日 20:45:54 到 2038 年 1 月 19 日 03:14:07。（此范围符合 32 位有符号整数的最小值和最大值）。不过在 PHP 5.1 之前此范围在某些系统（如 Windows）中限制为从 1970 年 1 月 1 日到 2038 年 1 月 19 日。
格式字串可以识别以下 format参数的字符串
​format字符
说明
返回值例子
日
---
---
d
月份中的第几天，有前导零的 2 位数字
01到 31
D
星期中的第几天，文本表示，3 个字母
Mon到 Sun
j
月份中的第几天，没有前导零
1到 31
l（“L”的小写字母）
星期几，完整的文本格式
Sunday到 Saturday
N
ISO-8601 格式数字表示的星期中的第几天（PHP 5.1.0 新加）
1（表示星期一）到 7（表示星期天）
S
每月天数后面的英文后缀，2 个字符
st，nd，rd或者 th。可以和 j一起用
w
星期中的第几天，数字表示
0（表示星期天）到 6（表示星期六）
z
年份中的第几天
0到 366
星期
---
---
W
ISO-8601 格式年份中的第几周，每周从星期一开始（PHP 4.1.0 新加的）
例如：42（当年的第 42 周）
月
---
---
F
月份，完整的文本格式，例如 January 或者 March
January到 December
m
数字表示的月份，有前导零
01到 12
M
三个字母缩写表示的月份
Jan到 Dec
n
数字表示的月份，没有前导零
1到 12
t
给定月份所应有的天数
28到 31
年
---
---
L
是否为闰年
如果是闰年为 1，否则为 0
o
ISO-8601 格式年份数字。这和 Y的值相同，只除了如果 ISO 的星期数（W）属于前一年或下一年，则用那一年。（PHP 5.1.0 新加）
Examples: 1999or 2003
Y
4 位数字完整表示的年份
例如：1999或 2003
y
2 位数字表示的年份
例如：99或 03
时间
---
---
a
小写的上午和下午值
am或 pm
A
大写的上午和下午值
AM或 PM
B
Swatch Internet 标准时
000到 999
g
小时，12 小时格式，没有前导零
1到 12
G
小时，24 小时格式，没有前导零
0到 23
h
小时，12 小时格式，有前导零
01到 12
H
小时，24 小时格式，有前导零
00到 23
i
有前导零的分钟数
00到 59>
s
秒数，有前导零
00到 59>
时区
---
---
e
时区标识（PHP 5.1.0 新加）
例如：UTC，GMT，Atlantic/Azores
I
是否为夏令时
如果是夏令时为 1，否则为 0
O
与格林威治时间相差的小时数
例如：+0200
T
本机所在的时区
例如：EST，MDT（【译者注】在 Windows 下为完整文本格式，例如“Eastern Standard Time”，中文版会显示“中国标准时间”）。
Z
时差偏移量的秒数。UTC 西边的时区偏移量总是负的，UTC 东边的时区偏移量总是正的。
-43200到 43200
完整的日期/时间
---
---
c
ISO 8601 格式的日期（PHP 5 新加）
2004-02-12T15:19:21+00:00
r
RFC 822 格式的日期
例如：Thu, 21 Dec 2000 16:01:07 +0200
U
从 Unix 纪元（January 1 1970 00:00:00 GMT）开始至今的秒数
参见 time()
格式字串中不能被识别的字符将原样显示。Z格式在使用 gmdate()时总是返回 0。 
例子 1. date()例子
<?php
// 设定要用的默认时区。自 PHP 5.1 可用
date_default_timezone_set('UTC');
// 输出类似：Monday
echo date("l");
// 输出类似：Monday 15th of August 2005 03:12:46 PM
echo date('l dS \of F Y h:i:s A');
// 输出：July 1, 2000 is on a Saturday
echo "July 1, 2000 is on a " . date("l", mktime(0, 0, 0, 7, 1, 2000));
/* 在格式参数中使用常量 */
// 输出类似：Mon, 15 Aug 2005 15:12:46 UTC
echo date(DATE_RFC822);
// 输出类似：2000-07-01T00:00:00+0000
echo date(DATE_ATOM, mktime(0, 0, 0, 7, 1, 2000));
?>
例子 2. 在 date()中转义字符
<?php
// prints something like: Wednesday the 15th
echo date("l \\t\h\e jS");
?>