首页 > 程序设计

PHP格式化时间

近日写PHP程序,需要对时间进行处理,因此记录下对时间的格式化参数。

函数date(format,timestamp)
format 必需。规定时间戳的格式。
timestamp 可选。规定时间戳。默认是当前的日期和时间。

格式化时间参数:

Y - 年,四位数字; 如: "1999"
y - 年,二位数字; 如: "99"
F - 月份,英文全名; 如: "January"
M - 月份,三个英文字母; 如: "Jan"
m - 月份,二位数字,若不足二位则在前面补零; 如: "01" 至 "12"
n - 月份,二位数字,若不足二位则不补零; 如: "1" 至 "12"
d - 几日,二位数字,若不足二位则前面补零; 如: "01" 至 "31"
j - 几日,二位数字,若不足二位不补零; 如: "1" 至 "31"
l - 星期几,英文全名; 如: "Friday"
D - 星期几,三个英文字母; 如: "Fri"
w - 数字型的星期几,如: "0" (星期日) 至 "6" (星期六)
A - "AM" 或是 "PM" 
a - "am" 或是 "pm"
H - 24 小时制的小时; 如: "00" 至 "23"
h - 12 小时制的小时; 如: "01" 至 "12"
G - 24 小时制的小时,不足二位不补零; 如: "0" 至 "23"
g - 12 小时制的小时,不足二位不补零; 如: "1" 至 12"
i - 分钟; 如: "00" 至 "59"
s - 秒; 如: "00" 至 "59"
U - 总秒数
z - 一年中的第几天; 如: "0" 至 "365"
S - 字尾加英文序数,二个英文字母; 如: "th","nd"
t - 指定月份的天数; 如: "28" 至 "31"

另外,有个字符串转换为时间函数
strtotime()

2014-3-1 18:45:16 评论(0) 程序设计
全文完 阅读全文

jQuery获取checkbox的checked

jQuery获取checkbox的checked属性时应该要使用prop方法,返回值是true或者false。

例如:

$("#checkbox_test").prop("checked");

测试版本:1.6 1.11

2014-2-27 20:29:43 评论(0) 程序设计
全文完 阅读全文

Delphi中DLL传递对象作为参数

下午在公司写程序,关于DLL中传递对象作为参数的问题。考虑了许多方法,也参考了一些资料,得出下面的方法。

DLL中:

interface
  TMsg = class
  public
    procedure Show; virtual;
  end;
function CreateMsg: TMsg; stdcall;
implementation
procedure TMsg.Show;
begin
  MessageBox(0, 'ok', 'ok', 0);
end;
function CreateMsg: TMsg;
begin
  Result := TMsg.Create;
end;

导出函数中加入exports CreateMsg;

EXE中是需要对之前声明的类重新定义的,但不需要实现,所以类中的方法都标识成为abstract抽象方法:

interface
type
  TMsg = class
  public
    procedure Show; virtual; abstract;
  end;
function CreateUDPMsg: TMsg; stdcall; external 'IM.dll';
implementation
procedure TForm1.Button1Click(Sender: TObject);
var
  Msg: TMsg;
begin
  Msg := CreateUDPMsg;
  Msg.Show;
  Msg.Free;
end;

不过这种传递参数的方式要求DLL中的类声明和EXE中的类声明必须一致,否则就会出错。一旦修改了DLL中的类声明,所有调用了此DLL的EXE程序必须也修改为同样的类声明,并将方法变更为abstract。为了方便省事,参考了一些资料,可以使用interface接口来作为传递的类型。

2011-1-17 19:02:15 评论(1) 程序设计
更多内容 阅读全文

文字的抗锯齿绘制·Delphi

最近在做十字之门的文字输出,可是却发现了一个问题,文字的锯齿现象严重,回想到以前的很多游戏,似乎都有这个现象。查阅了一些资料,Windows本身就是没有抗锯齿功能,即便是开启了ClearType,也不会对图形游戏有效。在游戏中要使文字清晰,必须要找出一个类似于ClearType的方法。

Windows中跟字体相关的API函数有CreateFont、CreateFontIndirect和CreateFontIndirectEx,其中各个函数又分为A版和W版,也就是ASCII与Unicode的区别。以上几个函数的作用都是相同的,创建一种可供任何设备使用的逻辑字体。不同的是,CreateFont将字体特性直接作为参数传入函数,而CreateFontIndirect是将字体特性保存在LOGFONT结构中,再将该LOGFONT传入函数。在Windows.pas中LOGFONT被定义为等同于tgaLOGFONTA,其中tagLOGFONTA是这样定义的:

  1. tagLOGFONTA = packed record
  2.   lfHeight: Longint;
  3.   lfWidth: Longint;
  4.   lfEscapement: Longint;
  5.   lfOrientation: Longint;
  6.   lfWeight: Longint;
  7.   lfItalic: Byte;
  8.   lfUnderline: Byte;
  9.   lfStrikeOut: Byte;
  10.   lfCharSet: Byte;
  11.   lfOutPrecision: Byte;
  12.   lfClipPrecision: Byte;
  13.   lfQuality: Byte;
  14.   lfPitchAndFamily: Byte;
  15.   lfFaceName: array[0..LF_FACESIZE - 1] of AnsiChar;
  16. end;

我们要做的就是修改其lfQuality属性,该值决定了文字的输出质量,可取值为DEFAULT_QUALITY(默认质量)、DRAFT_QUALITY(草稿质量)、PROOF_QUALITY(正稿质量)、NONANTIALIASED_QUALITY(无抗锯齿质量)和ANTIALIASED_QUALITY(抗锯齿质量)。在这里,我们选用ANTIALIASED_QUALITY。

  1. procedure DrawText;
  2. var
  3.   lf: LogFont;
  4.   bmp: TBitmap;
  5. begin
  6.   bmp := TBitmap.Create;
  7.   bmp.SetSize(320, 240);
  8.   with bmp.Canvas.Font do
  9.   begin
  10.     Name := '方正小标宋简体';
  11.     Size := 14;
  12.     GetObject(Handle, SizeOf(LogFont), @lf);
  13.     lf.lfQuality := ANTIALIASED_QUALITY;
  14.     Handle := CreateFontIndirect(lf);
  15.   end;
  16.   bmp.Canvas.TextOut(0, 0, '十字之门Preview2即将竣工');
  17.   Canvas.Draw(50, 50, bmp);
  18.   bmp.Free;
  19. end;

不过十字之门用的字体输出却不是这种方式,会把字体全部打包起来,免去了用户安装字体的麻烦。不过从这段代码中,应该可以看出关于十字之门的些什么吧。^_^

2009-12-23 22:56:58 评论(6) 程序设计
全文完 阅读全文

Discuz!NT中url重写的bug

由于DvBBS.NET迟迟不见更新,加上一些使用上的问题,十字之门论坛还是更换为Discuz!NT,曾经由于服务器问题而被我放弃的Discuz!NT在软件更新之后终于可以使用。使用之中发现一些问题,也算是一些小bug。Discuz!NT提供了URL重写的功能,此功能虽然实现了URL重写,但是在页面显示上仍然显示旧地址showforum-{0}-{1}.aspx,几经周折无耐只能查看Discuz!NT的源代码,才发现Discuz!NT的ShowForumAspxRewrite函数根本没有将forumid转换为设置好的url地址,而都是转为默认地址。

  1. public static string ShowForumAspxRewrite(int forumid, int pageid)
  2. {
  3.     //当使用伪aspx
  4.    if (config.Aspxrewrite == 1)
  5.     {
  6.        if (pageid > 1)
  7.             return "showforum-" + forumid + "-" + pageid + config.Extname;
  8.        else
  9.            return "showforum-" + forumid + config.Extname;
  10.     }
  11.    else
  12.     {
  13.        if (pageid > 1)
  14.            return "showforum.aspx?forumid=" + forumid + "&page=" + pageid;
  15.        else
  16.            return "showforum.aspx?forumid=" + forumid;
  17.     }

程序在判断完Aspxrewrite之后直接return了默认的url地址showforum,调用了该函数转换自然是不能转换为正确的地址了。要想转换为正确的url,只能自己修改源码了。

2009-12-15 23:19:19 评论(0) 程序设计
更多内容 阅读全文

ASP.NET母版

最近用ASP.NET制作网站,第一次使用母版这个东西。

母版是由.NET 2.0引入的,类似于Dreamweaver中的模板,只是它比模板更智能,可以动态的更新页面。母版页由两部分组成,母版页(MasterPage)本身和若干个内容页(ContentPage)。

母版页实际上就是一个ASP.NET文件,不过它的扩展名为.master,并且用@ Master指令替换了用于普通 .ASPX 页的 @ Page 指令。

  1. <%@ Master Language="C#" %> 

在母版页中需要显示内容页的地方,添加ContentPlaceHolder控件,例如:

  1. <asp:ContentPlaceHolder ID="ContentPlaceHolderMain" runat="server" /> 

下面看看内容页。在内容页的最前,需要使用 @ Page 指令将内容页绑定到母版页中,同时还可以指定内容页的标题。

  1. <%@ Page Language="C#" MasterPageFile="~/MasterPage.master" Title="十字之门" %> 

之后,通过向内容页添加 Content 控件并将这些控件映射到母版页上的 ContentPlaceHolder 控件来创建内容。

  1. <asp:Content ID="ContentMain" ContentPlaceHolderID="ContentPlaceHolderMain" Runat="Server"> 
  2.     <img src="images/working.gif" alt="" /><br /> 
  3.     施工中……  
  4. </asp:Content> 

在母版页中可以定义一些公共函数,供内容页来调用。

  1. public int sum(int a,b)  
  2. {  
  3.     return(a+b);  
  4. }  

在内容页中调用:

  1. <%@ MasterType VirtualPath="~/MasterPage.master" %> 
  2. <%=Master.sum(3,4)%> 

2008-11-17 20:45:52 评论(2) 程序设计
更多内容 阅读全文
1/1, 6 « 1 »