各种编程语言中获取与转换Unix时间戳(Unix timestamp)

如何在不同编程语言中获取现在的Unix时间戳(Unix timestamp)?

Java time
JavaScript Math.round(new Date().getTime()/1000)
getTime()返回数值的单位是毫秒
Microsoft .NET / C# epoch = (DateTime.Now.ToUniversalTime().Ticks – 621355968000000000) / 10000000
MySQL SELECT unix_timestamp(now())
Perl time
PHP time()
PostgreSQL SELECT extract(epoch FROM now())
Python 先 import time 然后 time.time()
Ruby 获取Unix时间戳:Time.now 或 Time.new
显示Unix时间戳:Time.now.to_i
SQL Server SELECT DATEDIFF(s, ‘1970-01-01 00:00:00’, GETUTCDATE())
Unix / Linux date +%s
VBScript / ASP DateDiff(“s”, “01/01/1970 00:00:00”, Now())
其他操作系统
(如果Perl被安装在系统中)
命令行状态:perl -e “print time”

如何在不同编程语言中实现Unix时间戳(Unix timestamp) → 普通时间?

Java String date = new java.text.SimpleDateFormat(“dd/MM/yyyy HH:mm:ss”).format(new java.util.Date(Unix timestamp * 1000))
JavaScript 先 var unixTimestamp = new Date(Unix timestamp * 1000) 然后 commonTime = unixTimestamp.toLocaleString()
Linux date -d @Unix timestamp
MySQL from_unixtime(Unix timestamp)
Perl 先 my $time = Unix timestamp 然后 my ($sec, $min, $hour, $day, $month, $year) = (localtime($time))[0,1,2,3,4,5,6]
PHP date(‘r’, Unix timestamp)
PostgreSQL SELECT TIMESTAMP WITH TIME ZONE ‘epoch’ + Unix timestamp) * INTERVAL ‘1 second’;
Python 先 import time 然后 time.gmtime(Unix timestamp)
Ruby Time.at(Unix timestamp)
SQL Server DATEADD(s, Unix timestamp, ‘1970-01-01 00:00:00’)
VBScript / ASP DateAdd(“s”, Unix timestamp, “01/01/1970 00:00:00”)
其他操作系统
(如果Perl被安装在系统中)
命令行状态:perl -e “print scalar(localtime(Unix timestamp))”

JAVASCRIPT版PRINT_R函数

function print_r( theObj, echo, dep ) {
    var retStr = '', rn = "\r\n";
    if(typeof dep == 'undefined') {
        dep = 0;
    }
    var blank = function (num) {
        for(var i=0, str = ''; i < num; i++) str += ' ';
        return str;
    };
    if( typeof theObj == 'object') {
        var cbox = theObj.constructor == Array ? ['[', ']'] : ['{', '}'];
        retStr += (theObj.constructor == Array ? 'array' : typeof theObj) + cbox[0] + rn;
        for (var p in theObj) {
            retStr += blank( (dep + 1) * 4 ) + p + ' => ';
            retStr += typeof theObj[p] == 'object' ? print_r( theObj[p], true, dep + 1 ) : theObj[p];
            retStr += rn;
        }
        retStr += blank( dep * 4 ) + cbox[1] + rn;
    }
    else {
        retStr += typeof theObj + ':' + theObj + rn;
    }
    if(echo) {
        return retStr;
    }
    else {
        alert(retStr);
    }
}

jquery 之validate 笔记

jquery.validate是jquery旗下的一个验证框架,借助jquery的优势,我们可以迅速验证一些常见的输入,并且可以自己扩充自己的验证方法,并且对国际化也有很好的支持。
说明:需要JQuery版本:1.2.6+
步骤:
1, 要导入相应的jQuery.js与jquery.validate.js文件
<script src=”jquery.js” type=”text/javascript”></script>
<script src=”jquery.validate.js” type=”text/javascript”>
2, 在相应的字段上指定验证规则
名称 *<input type=”text” name=”loginName” class=”required”>
其中class=”required”代表本字段必须要输入数据
3, 指定要对表单进行验证
<script type=”text/javascript”>
$(function(){
$(“#testForm”).validate();
});
</script>

效果如下图:
1. 基础知识
1.1. 指定验证规则的方式
1.1.1. 把验证规则写到字段元素的class属性中
例:
名称 * <input type=”text” name=”loginName” class=”required”><br>
密 *  <input type=”password” name=”password” class=”required”><br>
再次输入 <input type=”password” name=”password2″
class=”{equalTo: ‘[name=password]’} required”><br>
生日   <input type=”text” name=”birthday” class=”dateISO”><br>
E-mail *<input type=”text” name=”email” class=”email”><br>
PAR(zip)<input type=”file” name=”resource” class=”{accept: ‘zip’}”>

说明:
1,如果使用class=”{}”的方式,必须引入包:jquery.metadata.js
1.1.2. 调用validate()方法时传递字段的验证规则
$(function() {
$(“#testForm”).validate({
rules: {
loginName:{
required: true,
min: 2
} ,
password: {
required: true
},
password2: {
equalTo: “input[name=password]”
}
}
});
});
1.2. 内置的验证规则
required:true 必输字段
remote:”check.php” 使用ajax方法调用check.php验证输入值
email:true 必须输入正确格式的电子邮件
url:true 必须输入正确格式的网址
date:true 必须输入正确格式的日期
dateISO:true 必须输入正确格式的日期(ISO),例如:2010-01-01,2010/01/01 只验证格式,不验证有效性
number:true 必须输入合法的数字(负数,小数)
digits:true 必须输入整数
creditcard: 必须输入合法的信用卡号
equalTo:”#field” 输入值必须和#field相同
accept: “gif|png|jpg” 输入拥有合法后缀名的字符串(上传文件的后缀),多个后缀之间用’|’隔开
maxlength:5 输入长度最多是5的字符串(汉字算一个字符)
minlength:10 输入长度最小是10的字符串(汉字算一个字符)
rangelength:[5,10] 输入长度必须介于 5 和 10 之间的字符串”)(汉字算一个字符)
range:[5,10] 输入值必须介于 5 和 10 之间
max:5 输入值不能大于5
min:10 输入值不能小于10
说明:
1, remote是远程验证:比如注册验证用户名是否已被注册,返回值只能是true(验证成功)或false(验证失败)。
2, 某些属性值中的引号不能省略,否则出错。如accept、equalTo等。
1.3. 自定义验证规则
除了内置的验证规则,validation还允许自定义验证规则。这是通过validation的addMethod()方法实现的,语法 为:
jQuery.validator.addMethod(“name”,function,message)
其中:
1, name为验证规则的名称
2, function定义验证的规则。参数有?。返回值为?。
3, message是验证失败时的提示信息。
1.4. 指定错误提示内容
1.4.1. 更改默认的提示内容
jQuery.extend(jQuery.validator.messages, {
required: “必选字段”,
remote: “请修正该字段”,
email: “请输入正确格式的电子邮件”,
url: “请输入合法的网址”,
date: “请输入合法的日期”,
dateISO: “请输入合法的日期 (ISO).”,
number: “请输入合法的数字”,
digits: “只能输入整数”,
creditcard: “请输入合法的信用卡号”,
equalTo: “请再次输入相同的值”,
accept: “请输入拥有合法后缀名的字符串”,
maxlength: jQuery.validator.format(“允许的最大长度为 {0} 个字符”),
minlength: jQuery.validator.format(“允许的最小长度为 {0} 个字符”),
rangelength: jQuery.validator.format(“允许的长度为{0}和{1}之间”),
range: jQuery.validator.format(“请输入介于 {0} 和 {1} 之间的值”),
max: jQuery.validator.format(“请输入一个最大为 {0} 的值”),
min: jQuery.validator.format(“请输入一个最小为 {0} 的值”)
扩展工具
stringMinLength: jQuery.validator.format(“请输入一个小于{0} 的字符串, 一个中文字符长度为2”),
stringMaxLength: jQuery.validator.format(“请输入一个大于} 的字符串, 一个中文字符长度为2”),
string: “含特殊符号!”,
byteRangeLength: “请确保输入的值在3-15个字节之间(一个中文字算2个字节)”,
stringCH: “只能输入汉字,一个汉字占两具字节”,
stringEN:”只能输入字母”

1.4.2. 个别表单改变提示内容(只对当前表单有效)
方法一:
<input type=”file” name=”parResource”
class=”{accept: ‘zip’, messages: {accept:’请选择正确的文件’}}”>

方法二:
$(function() {
$(“#testForm”).validate({
messages:{
loginName: {
required: “必选字段2”
},
email: {
required: ‘必选字段22’,
email: “请输入正确格式的电子邮件2″
}
}
});
});
1.5. 改变错误消息显示样式
指定label.error的样式就可以了,如下:
<style type=”text/css”>
label.error{
margin-left: 10px;
color: red;
}
</style>

说明:label.error指class为error的label元素,如:<label for=”resource” class=”error”>

这是汤阳光老师讲的,虽然这位老师很年轻,但是他的技术很高,以前学的知识很多,所以也有思路不清的地方,可是自从这位老师给我们讲课,我就感觉到他有一种对JAVA技术的灵性,无论是什么在他那里总能得到思想上的升华!真是佩服!

function DIYMethod(){
// 字符最小长度验证(一个中文字符长度为2)
jQuery.validator.addMethod(“stringMinLength”, function(value, element, param) {
var length = value.length;
for ( var i = 0; i < value.length; i++) {
if (value.charCodeAt(i) > 127) {
length++;
}
}
return this.optional(element) || (length >= param);
}, $.validator.format(“长度不能小于{0}!”));

// 字符最大长度验证(一个中文字符长度为2)
jQuery.validator.addMethod(“stringMaxLength”, function(value, element, param) {
var length = value.length;
for ( var i = 0; i < value.length; i++) {
if (value.charCodeAt(i) > 127) {
length++;
}
}
return this.optional(element) || (length <= param);
}, $.validator.format(“长度不能大于{0}!”));

// 字符验证
jQuery.validator.addMethod(“string”, function(value, element) {
return this.optional(element) || /^[\u0391-\uFFE5\w]+$/.test(value);
}, “不允许包含特殊符号!”);

// 中文字两个字节
jQuery.validator.addMethod(“byteRangeLength”, function(value, element, param) {
var length = value.length;
for(var i = 0; i < value.length; i++){
if(value.charCodeAt(i) > 127){
length++;
}
}
return this.optional(element) || ( length >= param[0] && length <= param[1] );
}, “请确保输入的值在3-15个字节之间(一个中文字算2个字节)”);

// 只能输入中文
jQuery.validator.addMethod(“stringCH”, function(value, element) {
var length = value.length;
for(var i = 0; i < value.length; i++){
if(value.charCodeAt(i) > 127){
length++;
}
}
return this.optional(element) || /[^u4E00-u9FA5]/g.test(value);
}, “只能输入汉字,一个汉字占两具字节”);

// 只能输入26个字母
jQuery.validator.addMethod(“stringEN”, function(value, element) {
var length = value.length;
for(var i = 0; i < value.length; i++){
if(value.charCodeAt(i) > 127){
length++;
}
}
alert(length);
return this.optional(element) || /^[A-Za-z]+$/g.test(value);
}, “只能输入字母”);
}

FCKeditor实现Ctrl+Enter提交

步骤:

1、打开 editor/js/fckeditorcode_ie.js,找到这部分代码 

E.SetKeystrokes([[13,’Enter’],[SHIFT+13,’ShiftEnter’],……

插入代码 [CTRL+13,’CtrlEnter’], 后修改如下:

E.SetKeystrokes([[CTRL+13,’CtrlEnter’],[13,’Enter’],[SHIFT+13,’ShiftEnter’],……

2、找到这部分代码:

try{switch (B){case ‘Enter’:return C.DoEnter();break;

插入代码  后修改如下:

try{switch (B){case ‘CtrlEnter’:return ctlent();break;case ‘Enter’:return C.DoEnter();break;

3、在文件的最后加上如下代码

function ctlent(){parent.parent.parent.document.getElementById(“submitbuttonid”).click();};

4、保存此JS文件,同时如上步骤更新文件 fckeditorcode_gecko.js

onBlur,onChange,onClick,onKeyDown,onKeyUp,onKeyPress,onMouseEnter,onMouseDown作用一览

onBlur:控件在失去焦点的时候触发
onChange:当控件的内容发生改变时触发该事件
onClick:点击该控件时触发
onKeyDown:在控件有焦点的情况下,按下键时发生
onKeyUp:在控件有焦点的情况下,释放键时发生
onKeyPress:在控件有焦点的情况下,按下键时发生
键事件按下列顺序发生;
1.keyDown
2.keyPress
3.keyUp
非字符键不会引发keyPress,但是非字符键可以引发keyDown,keyUp
onMouseEnter:当鼠标指针进入控件时发生
onMouseDown:当鼠标指针在控件上,按下鼠标键时发生
onMouseUp:当鼠标指针在控件上,释放鼠标键时发生
onMouseLeave:当鼠标指针离开控件时发生

VBScript使用ADSI为IIS批量添加屏蔽或允许访问的IP

'/*=========================================================================  
' * Intro       VBScript使用ADSI为IIS批量添加屏蔽或允许访问的IP  
' * FileName    VBScript-ADSI-IIS-Add-Deny-Grant-IP-Change-MetaBase.xml.vbs  
' * Author      yongfa365  
' * Version     v1.0  
' * WEB         http://www.yongfa365.com  
' * Email       yongfa365[at]qq.com  
' * FirstWrite  http://www.yongfa365.com/Item/ADSI-IIS-Add-Deny-Grant-IP.vbs.html  
' * From        http://blog.csdn.net/linyu/archive/2008/11/14/3300454.aspx  
' * MadeTime    2008-12-08 23:10:45  
' * LastModify  2008-12-08 23:10:45  
' *==========================================================================*/  
 
'AddDenyIP2All "192.168.1.106,255.255.255.0"  
'AddDenyIP2All "127.0.0.1"  
'AddDenyIP "123456","127.0.0.1"  
 
 
'添加要屏蔽的IP或一组计算机,到一个指定站点上  
 
Sub AddDenyIP(strWebNo, strDenyIp)  
    On Error Resume Next 
    Set SecObj = GetObject("IIS://LocalHost/W3SVC/" & strWebNo & "/Root")  
    Set MyIPSec = SecObj.IPSecurity  
    MyIPSec.GrantByDefault = True 
    IPList = MyIPSec.IPDeny  
    i = UBound(IPList) + 1  
    ReDim Preserve IPList(i)  
    IPList(i) = strDenyIp  
    MyIPSec.IPDeny = IPList  
    SecObj.IPSecurity = MyIPSec  
    SecObj.Setinfo  
End Sub 
 
 
'添加要屏蔽的IP或一组计算机,到IIS公共配置,以应用到所有站点  
'如果之前对有些站点单独做过屏蔽IP设置,在些设置不会生效,得在总的网站上设置一下,然后覆盖所有子结点  
 
Sub AddDenyIP2All(strDenyIp)  
    On Error Resume Next 
    Set SecObj = GetObject("IIS://LocalHost/W3SVC")  
    Set MyIPSec = SecObj.IPSecurity  
    MyIPSec.GrantByDefault = True 
    IPList = MyIPSec.IPDeny  
    i = UBound(IPList) + 1  
    ReDim Preserve IPList(i)  
    IPList(i) = strDenyIp  
    MyIPSec.IPDeny = IPList  
    SecObj.IPSecurity = MyIPSec  
    SecObj.Setinfo  
End Sub 
 
 
 
 
 
 
'添加允许的IP或一组计算机,到一个指定站点上  
 
Sub AddGrantIP(strWebNo, strGrantIp)  
    On Error Resume Next 
    Set SecObj = GetObject("IIS://LocalHost/W3SVC/" & strWebNo & "/Root")  
    Set MyIPSec = SecObj.IPSecurity  
    MyIPSec.GrantByDefault = False 
    IPList = MyIPSec.IPGrant  
    i = UBound(IPList) + 1  
    ReDim Preserve IPList(i)  
    IPList(i) = strGrantIp  
    MyIPSec.IPGrant = IPList  
    SecObj.IPSecurity = MyIPSec  
    SecObj.Setinfo  
End Sub 
 
 
'添加允许的IP或一组计算机,到IIS公共配置,以应用到所有站点  
'如果之前对有些站点单独做过屏蔽IP设置,在些设置不会生效,得在总的网站上设置一下,然后覆盖所有子结点  
 
Sub AddGrantIP2All(strGrantIp)  
    On Error Resume Next 
    Set SecObj = GetObject("IIS://LocalHost/W3SVC")  
    Set MyIPSec = SecObj.IPSecurity  
    MyIPSec.GrantByDefault = False 
    IPList = MyIPSec.IPGrant  
    i = UBound(IPList) + 1  
    ReDim Preserve IPList(i)  
    IPList(i) = strGrantIp  
    MyIPSec.IPGrant = IPList  
    SecObj.IPSecurity = MyIPSec  
    SecObj.Setinfo  
End Sub 
 
 
 
'显示IIS公共配置里禁止访问的IP  
Sub ListDenyIP()  
    Set SecObj = GetObject("IIS://LocalHost/W3SVC")  
    Set MyIPSec = SecObj.IPSecurity  
    IPList = MyIPSec.IPDeny 'IPGrant/IPDeny  
    WScript.Echo Join(IPList, vbCrLf)  
'   For i = 0 To UBound(IPList)  
'       WScript.Echo i + 1 & "-->" & IPList(i)  
'   Next  
End Sub

限制文本框只能输入数字,小数点,英文字母,汉字

1.文本框只能输入数字代码(小数点也不能输入):

<input onkeyup=”this.value=this.value.replace(/\D/g,”)” onafterpaste=”this.value=this.value.replace(/\D/g,”)”>

2.只能输入数字,能输小数点. (方法1)

<input onkeyup=”if(isNaN(value))execCommand(‘undo’)” onafterpaste=”if(isNaN(value))execCommand(‘undo’)”>

<input name=txt1 onchange=”if(/\D/.test(this.value)){alert(‘只能输入数字’);this.value=”;}”>

3.数字和小数点方法二

<input type=text t_value=”” o_value=”” onkeypress=”if(!this.value.match(/^[\+\-]?\d*?\.?\d*?$/))this.value=this.t_value;else this.t_value=this.value;if(this.value.match(/^(?:[\+\-]?\d+(?:\.\d+)?)?$/))this.o_value=this.value” onkeyup=”if(!this.value.match(/^[\+\-]?\d*?\.?\d*?$/))this.value=this.t_value;else this.t_value=this.value;if(this.value.match(/^(?:[\+\-]?\d+(?:\.\d+)?)?$/))this.o_value=this.value” onblur=”if(!this.value.match(/^(?:[\+\-]?\d+(?:\.\d+)?|\.\d*?)?$/))this.value=this.o_value;else{if(this.value.match(/^\.\d+$/))this.value=0+this.value;if(this.value.match(/^\.$/))this.value=0;this.o_value=this.value}”>

4.只能输入字母和汉字

<input onkeyup=”value=value.replace(/[\d]/g,”) “onbeforepaste=”clipboardData.setData(‘text’,clipboardData.getData(‘text’).replace(/[\d]/g,”))” maxlength=10 name=”Numbers”>

5.只能输入英文字母和数字,不能输入中文

<input onkeyup=”value=value.replace(/[^\w\.\/]/ig,”)”>

6.只能输入数字和英文

<input onKeyUp=”value=value.replace(/[^\d|chun]/g,”)”>

7.小数点后只能有最多两位(数字,中文都可输入),不能输入字母和运算符号:

<input onKeyPress=”if((event.keyCode<48 || event.keyCode>57) && event.keyCode!=46 || /\.\d\d$/.test(value))event.returnValue=false”>

8.小数点后只能有最多两位(数字,字母,中文都可输入),可以输入运算符号:

<input onkeyup=”this.value=this.value.replace(/^(\-)*(\d+)\.(\d\d).*$/,’$1$2.$3′)”>

调用onkeypress事件实现 限制文本框只能输入数字及小数点(并且只能输入1次)

function KeyPress(objTR)
{
var txtval = objTR.value;
var key = event.keyCode;
if((key <48 || key >57)&&key !=46)
{
event.keyCode = 0;
}
else
{
if(key == 46)
{
if(txtval.indexOf(“.”) != -1 || txtval.length == 0)
event.keyCode = 0;
}
}
}

正则表达式口诀及教程

正则其实也势利,削尖头来把钱揣; (指开始符号^和结尾符号$)
特殊符号认不了,弄个倒杠来引路; (指\. \*等特殊符号)
倒杠后面跟小w, 数字字母来表示; (\w跟数字字母;\d跟数字)
倒杠后面跟小d, 只有数字来表示;
倒杠后面跟小a, 报警符号嘀一声;
倒杠后面跟小b, 单词分界或退格;
倒杠后面跟小t, 制表符号很明了;
倒杠后面跟小r, 回车符号知道了;
倒杠后面跟小s, 空格符号很重要;
小写跟罢跟大写,多得实在不得了;
倒杠后面跟大W, 字母数字靠边站;
倒杠后面跟大S, 空白也就靠边站;
倒杠后面跟大D, 数字从此靠边站;
倒框后面跟大B, 不含开头和结尾;

单个字符要重复,三个符号来帮忙; (* + ?)
0 星加1 到无穷,问号只管0 和1; (*表0-n;+表1-n;?表0-1次重复)
花括号里学问多,重复操作能力强; ({n} {n,} {n,m})
若要重复字符串,园括把它括起来; ((abc){3} 表示字符串“abc”重复3次 )
特殊集合自定义,中括号来帮你忙;
转义符号行不通,一个一个来排队;
实在多得排不下,横杠请来帮个忙; ([1-5])
尖头放进中括号,反义定义威力大; ([^a]指除“a”外的任意字符 )
1竖作用可不小,两边正则互替换; (键盘上与“\”是同一个键)
1竖能用很多次,复杂定义很方便;
园括号,用途多;
反向引用指定组,数字排符对应它; (“\b(\w+)\b\s+\1\b”中的数字“1”引用前面的“(\w+)”)
支持组名自定义,问号加上尖括号; (“(?<Word>\w+)”中把“\w+”定义为组,组名为“Word”)
园括号,用途多,位置指定全靠它;
问号等号字符串,定位字符串前面; (“\b\w+(?=ing\b)”定位“ing”前面的字符串)
若要定位串后面,中间插个小于号; (“(?<=\bsub)\w+\b”定位“sub”后面的字符串)
问号加个惊叹号,后面跟串字符串;
PHPer都知道, !是取反的意思;
后面不跟这一串,统统符合来报到; (“\w*d(?!og)\w*”,“dog”不符合,“do”符合)
问号小于惊叹号,后面跟串字符串;
前面不放这一串,统统符合来报到;
点号星号很贪婪,加个问号不贪婪;
加号问号有保底,至少重复一次多;
两个问号老规矩,0次1次团团转;
花括号后跟个?,贪婪变成不贪婪;
还有很多装不下,等着以后来增加