zoukankan      html  css  js  c++  java
  • 【转】ruby 时间日期处理

    我们可以使用Time类来生成一个当前时间的对象:

    t = Time.new
    或
    t = Time.now

    Time类有类方法mktime(同义方法是local方法)来根据传入的参数生成时间对象,并且它使用的是当前的时区:

    t1 = Time.mktime(2001)                # January 1, 2001 at 0:00:00
    t2 = Time.mktime(2001,3)
    t3 = Time.mktime(2001,3,15)
    t4 = Time.mktime(2001,3,15,21)
    t5 = Time.mktime(2001,3,15,21,30)
    t6 = Time.mktime(2001,3,15,21,30,15) # March 15, 2001 9:30:15 pm

    Time.gm(同义方法是Time.utc)方法基本上和上面的mktime用法相同,但它使用的是GMT或UTC时区

    t8 = Time.gm(2001,3,15,21,30,15)   
    t9 = Time.utc(2001,3,15,21,30,15)

    生成的时间对象有一个to_a方法,可以把时间相关一信息转化成一个数组,数组中存放的信息格式如下:

    seconds, 
    minutes, 
    hours, 
    day, 
    month, 
    year, 
    day of week (0..6), 
    day of year (1..366), 
    daylight saving (true or false), 
    and time zone (as a string)

    因此,我们也可以这么用:

    t0 = Time.local(0,15,3,20,11,1979,2,324,false,"GMT-8:00")
    t1 = Time.gm(*Time.now.to_a)

    使用秒数来创建日期:
    ====================================================
    在内部,日期存储为一个整数,代表从1970年开始到当前的秒数,我们可以获取这么秒数或则利用这个秒数来创建日期:

    epoch = Time.at(0)          # Find the epoch (1 Jan 1970 GMT)
    newmil = Time.at(978307200) # Happy New Millennium! (1 Jan 2001)
    
    now = Time.now              # 16 Nov 2000 17:24:28
    sec = now.to_i              # 974424268

    日期的格式化
    ====================================================
    获取本日是星期几:

    now = Time.now + 1
    day_num = now.wday           #3
    day_abbr = now.strftime("%a")   #Wed
    day_full = now.strftime("%A")   #Wednesday

    获取一年中本日所在的周:

    t1 = Time.local(2002,5,1)
    1 = Date.new(2002,5,1)
    
    week1a = t1.strftime("%U").to_i   # 17
    week1b = t1.strftime("%W").to_i   # 17
    week1c = d1.cweek                 # 18

    获取当前时区:

    z1 = Time.gm(2000,11,10,22,5,0).zone     # "UTC"
    z2 = Time.local(2000,11,10,22,5,0).zone # "中国标准时间"

    格式化时间
    ====================================================

    t = Time.now
    puts t.strftime("%H:%M:%S")      # 22:07:45
    
    puts t.strftime("%H:%M")         # 22:07
    puts (t + 30).strftime("%H:%M") # 22:08 (加了30秒)
    
    puts t.strftime("%I:%M %p")      # 10:07 PM

    所有strftime方法中可用的格式化符号:
    =====================================================

    %a    星期的缩写,如Wed
    %A    星期的全称,如Wednesday
    %U    本星期在全年中所属的周数
    %W   
    %H    小时(24小时制)
    %M    分钟
    %S    秒
    %I    小时(12小时制)
    %p    PM 或 AM
    
    %b    月份的缩写,如 Jan
    %B    月份的全称,如 January
    %c    本地日期和时间,如 06/14/07 16:43:49
    %d    日期 (1..31)
    %j    本日在一年中所属的天 (1..366)
    %m    月份 (1..12)
    %w    星期的数字形式 (0..6)
    %x    本地日期,如 06/14/07
    %Y    本地时间,如 16:43:49
    %y    2位的年份表示,如07
    %Y    4位的年份表示,如2007
    %Z    时区名,如"中国标准时间"
    %%    字面符号%

    原文:http://hi.baidu.com/quick9999/item/caf3c454d308e3c09e26673a

  • 相关阅读:
    机器学习实战第7章——利用AdaBoost元算法提高分类性能
    js自定义事件的简单实现
    最完整的的判断使用的浏览器
    图片滚动图片的效果(不一样的实现思路)
    AspNetForum 论坛整改:添加了论坛联盟功能
    感叹之一:CSS样式
    ASPNETForums:如何创建多语言版本程序
    AspNetForum论坛整改:在论坛信息无法显示:浏览最多主题,回复最多的帖子……
    AspNetForum 论坛整改:添加显IP功能及IP所属地
    蓝牙抓包 WireShark 过滤方法
  • 原文地址:https://www.cnblogs.com/zs-note/p/3768017.html
Copyright © 2011-2022 走看看