我的云服务器以这种格式记录时间:
[17/Dec/2011:09:48:49 -0600]
Run Code Online (Sandbox Code Playgroud)
要把它读成Python变量,我可以说:
>>>str = '17/Dec/2011:09:48:49 -0600'
>>>import time
>>>print time.strptime(str,"%d/%b/%Y:%H:%M:%S -0600")
Run Code Online (Sandbox Code Playgroud)
结果:
time.struct_time(tm_year=2011, tm-mon=12, tm=mday=17, tm_hour=9, tm_min=48, tm_sec=49, tm_wday=5, tm_yday=351, tm_isdst=-1)
Run Code Online (Sandbox Code Playgroud)
或者我可以试试
>>>mytime = time.strptime(str,"%d/%b/%Y:%H:%M:%S -0600")
>>>print mytime.tm_hour
Run Code Online (Sandbox Code Playgroud)
结果:
9
Run Code Online (Sandbox Code Playgroud)
怎么-0600办?我期望它调整日期时间对象的小时值?是否有使用通配符而不是硬编码-0600?
我们需要在浏览器上使用JavaScript来读取和解析日历文件(.ics)(也称为iCal格式).我编写了一个自定义函数来读取这些值,然后使用JavaScript Date()函数来创建数据对象.
有没有更容易和更好的方法来做到这一点?请看我的功能(如下),欢迎您提出意见.
.ics文件中的典型日期值如下所示:
DTSTART:20110914T184000Z
需要在冒号分开,所以:
var strData = 'DTSTART:20110914T184000Z'
var x = strData.indexOf(":");
var strVal = strData.slice(x + 1 );
Run Code Online (Sandbox Code Playgroud)
接下来,调用一个返回日期对象的函数:
var dateObj = calenDate(strVal);
Run Code Online (Sandbox Code Playgroud)
//结果dateObj值:2011年10月14日星期五18:40:00 GMT-0400(东部夏令时)
这是解析日期的函数.
function calenDate(icalStr) {
// icalStr = '20110914T184000Z'
var strYear = icalStr.substr(0,4);
var strMonth = icalStr.substr(4,2);
var strDay = icalStr.substr(6,2);
var strHour = icalStr.substr(9,2);
var strMin = icalStr.substr(11,2);
var strSec = icalStr.substr(13,2);
var oDate = new Date(strYear,strMonth, strDay, strHour, strMin, strSec)
return oDate;
}
Run Code Online (Sandbox Code Playgroud)
我觉得有些事情是错误的,因为这个月错了.