精华内容
参与话题
问答
  • 日期时间格式化

    2018-08-17 16:19:12
    import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale;...public class DateTest { public static void main(String[] args...

    package com;

    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.Locale;

    public class DateTest {
    public static void main(String[] args) throws ParseException {
    Date d=new Date();
    //toString()来显示当前时间和日期
    System.out.println(d.toString());
    //getTime()获取时间戳
    System.out.println(d.getTime());
    //用before(),after(),equals()比较两个日期
    System.out.println(new Date(1999,2,12).before(new Date(2018,8,16)));
    System.out.println(new Date(1999,2,12).after(new Date(2018,8,16)));
    System.out.println(new Date(1999,2,12).equals(new Date(2018,8,16)));
    //使用 SimpleDateFormat 格式化日期
    SimpleDateFormat s=new SimpleDateFormat(“yyyy-MM-dd”);
    System.out.println(“现在是:”+s.format(d));
    //使用printf格式化
    System.out.printf(“全部日期和时间信息:%tc%n”,d);
    System.out.printf(“年-月-日格式:%tF%n”,d);
    System.out.printf(“月/日/年:%tD%n”,d);
    System.out.printf(“HH:MM:SS(十二小时制):%tr%n”,d);
    System.out.printf(“HH:MM:SS(24小时制):%tT%n”,d);
    System.out.printf(“HH:MM(24小时制):%tR\r\n”,d);
    System.out.printf(“%1stB %2td,tY\r\n”,”Due date:”,d);
    //b月份简称 Locale.US本地
    String str=String.format(Locale.US, “英文月份简称:%tb”,d);
    System.out.println(str);

    //java休眠sleep();
     try {
         System.out.println(new Date()+"\n");
        Thread.sleep(1000*3);
        System.out.println(new Date()+"\n");
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
     //计算天数
     Date dd=s.parse("2018-8-10");
     long end=dd.getTime();
     long start=System.currentTimeMillis();
     long day=1000*60*60*24;
     System.out.println((end-start)/day);
     //计算星期几
     Date w=s.parse("2018-8-16");
     int l=w.getDay();
    // String wk="日一二三四五六";
     //System.out.println("星期"+wk.charAt(l));
    
     String[] ww=new String[] {"日","一","二","三","四","五","六"};
     System.out.println("星期"+ww[w.getDay()]);
    }
    

    /*常用日期和时间格式化编码
    * y 四位年份
    * M 月份
    * d 一个月的日期(几号)
    * h 十二小时制(12)
    * H 二十四小时制(23)
    * m 分钟
    * s 秒
    * S 毫秒
    * E 星期几
    * w 一年中第几周
    * W 一月中第几周
    * a AM PM
    *
    *
    * printf格式化,以%t开头
    * c 全部日期和时间信息
    * F 年-月-日
    * D 月/日/年
    * r 十二小时时分秒
    * T 二十四小时时分秒
    * R 二十四小时时分
    *
    * */
    }

    展开全文
  • 【从菜鸟到高手】日期格式化

    千次阅读 2018-10-15 18:30:55
    1 软件中的日期格式化 日期格式化就是对日期字符串进行解析和格式化输出。 在软件系统中,日期的形式与其被使用的阶段密切相关,展现层的日期数据为字符串,逻辑层的日期数据为 Date 对象,存储层的日期数据为...

    1 软件中的日期格式化

    日期格式化就是对日期字符串进行解析和格式化输出。

    在软件系统中,日期的形式与其被使用的阶段密切相关,展现层的日期数据为字符串,逻辑层的日期数据为 Date 对象,存储层的日期数据为时间戳或者数据库提供的 Date 类型,有时候也直接存储为日期字符串。

    日期格式化就是在不同层次之间进行数据转换!

    时间戳 <=> Date 对象 <=> 格式化字符串

    2 UTC 时间与本地时间的关系

    UTC(Universal Time Coordinated) 是世界统一时间, GMT(Greenwich MeanTime) 格林尼治时间,UTC 与 GMT 的含义完全相同。

    UTC + 时区差 = 本地时间

    例如,本地(北京)时间是0325 (凌晨3点25分),那么,UTC就是 0325 - 0800 = -0475,负号意味着是前一天, -0475 + 2400= 1925,既前一天的晚上7点25分。

    中国与UTC的时差均为+8,也就是UTC+8。

    js 代码

    d = new Date() // Mon Oct 15 2018 18:15:31 GMT+0800 (中国标准时间)
    d.toUTCString() // "Mon, 15 Oct 2018 10:15:31 GMT"
    

    时间戳的概念:为当前时刻减去UTC时间(1970.1.1)零点时刻的秒数差,与当前系统所处的时区无关,同一时刻不管在任何时区下得到的时间戳都是一样的。

    python 代码

    import datetime
    dt = datetime.datetime.now()            #获取本地当前时间
    dt.timestamp()                  #获取时间戳
    
    timestamp = datetime.datetime.now(timezone.utc).timestamp()
    datetime.datetime.fromtimestamp(timestamp) # 通过timestamp得出datetime和utc datetime
    datetime.datetime.fromtimestamp(timestamp,timezone.utc)    # 通过timestamp utc datetime  
    
    • 此方式下now()函数中有个参数为tz,参数意思为时区信息,不设时为本地时间,当设置时,如tz=timezone.utc,则表示为当前的utc时间,无论是utc时间还是本地时间,获得的时间戳都是同一个值.
    • timestamp()内部会根据时区设置得到时间戳,当时区为utc时间时timestamp()函数直接减去EPOCH得到的秒数,当为其他时区的时间时通过标准C库函数mktime得到相差秒数,不管哪种方式,相差的秒数差是一样的,所以不同时区下的时间戳必定为同一个值。

    3 Java 日期格式化

    SimpleDateFormat 是非线程安全的,在多并发情况下会抛 java.lang.NumberFormatException: multiple points,或者是格式化时间错误。

    正确的使用方式:

    1. 每次都创建不同的 SimpleDateFormat 对象,适用于接口的调用频率很低的场景:
        public static  String formatDate(Date date)throws ParseException{
             SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            return sdf.format(date);
        }
        
        public static Date parse(String strDate) throws ParseException{
             SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            return sdf.parse(strDate);
        }
    
    1. 使用同步或锁: 适用于高并发且多短命线程的场景:
        private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
          
        public static String formatDate(Date date)throws ParseException{
            synchronized(sdf){
                return sdf.format(date);
            }  
        }
        
        public static Date parse(String strDate) throws ParseException{
            synchronized(sdf){
                return sdf.parse(strDate);
            }
        } 
    
    1. 使用 ThreadLocal 变量,适用于高并发且线程生命较为持久的场景
        // private static ThreadLocal<DateFormat> localsdf = new ThreadLocal<DateFormat>() {
        //     @Override
        //     protected DateFormat initialValue() {
        //         return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        //     }
        // };
    
        private static ThreadLocal<DateFormat> threadLocal = new ThreadLocal<DateFormat>(); 
    
        public static DateFormat instance(String format)   //"yyyy-MM-dd HH:mm:ss"
        {  
            DateFormat df = threadLocal.get();  
            if(df==null){  
                df = new SimpleDateFormat(format);  
                threadLocal.set(df);  
            }  
            return df;  
        }  
    
        public static Date parse(String dateStr) throws ParseException {
            return localsdf.get().parse(dateStr);
        }
    
        public static String format(Date date) {
            return localsdf.get().format(date);
        }
    
    1. 使用其他类库中线程安全的时间格式化类

    Apache Commons: FastDateFormat

    4 JS 日期格式化

    JS 没有提供原生的 format 方法,需要框架来实现:
    例如:

    /*   
    函数:格式化日期   
    参数:formatStr-格式化字符串   
    d:将日显示为不带前导零的数字,如1   
    dd:将日显示为带前导零的数字,如01   
    ddd:将日显示为缩写形式,如Sun   
    dddd:将日显示为全名,如Sunday   
    M:将月份显示为不带前导零的数字,如一月显示为1   
    MM:将月份显示为带前导零的数字,如01  
    MMM:将月份显示为缩写形式,如Jan  
    MMMM:将月份显示为完整月份名,如January  
    yy:以两位数字格式显示年份  
    yyyy:以四位数字格式显示年份  
    h:使用12小时制将小时显示为不带前导零的数字,注意||的用法  
    hh:使用12小时制将小时显示为带前导零的数字  
    H:使用24小时制将小时显示为不带前导零的数字  
    HH:使用24小时制将小时显示为带前导零的数字  
    m:将分钟显示为不带前导零的数字  
    mm:将分钟显示为带前导零的数字  
    s:将秒显示为不带前导零的数字  
    ss:将秒显示为带前导零的数字  
    l:将毫秒显示为不带前导零的数字  
    ll:将毫秒显示为带前导零的数字  
    tt:显示am/pm  
    TT:显示AM/PM  
    返回:格式化后的日期  
    */ 
    Date.prototype.format = function (formatStr) {  
        var date = this;  
        /*  
        函数:填充0字符  
        参数:value-需要填充的字符串, length-总长度  
        返回:填充后的字符串  
        */ 
        var zeroize = function (value, length) {  
            if (!length) {  
                length = 2;  
            }  
            value = new String(value);  
            for (var i = 0, zeros = ''; i < (length - value.length); i++) {  
                zeros += '0';  
            }  
                return zeros + value;  
        };  
        return formatStr.replace(/"[^"]*"|'[^']*'|\b(?:d{1,4}|M{1,4}|yy(?:yy)?|([hHmstT])\1?|[lLZ])\b/g, function($0) {  
            switch ($0) {  
                case 'd': return date.getDate();  
                case 'dd': return zeroize(date.getDate());  
                case 'ddd': return ['Sun', 'Mon', 'Tue', 'Wed', 'Thr', 'Fri', 'Sat'][date.getDay()];  
                case 'dddd': return ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'][date.getDay()];  
                case 'M': return date.getMonth() + 1;  
                case 'MM': return zeroize(date.getMonth() + 1);  
                case 'MMM': return ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'][date.getMonth()];  
                case 'MMMM': return ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'][date.getMonth()];  
                case 'yy': return new String(date.getFullYear()).substr(2);  
                case 'yyyy': return date.getFullYear();  
                case 'h': return date.getHours() % 12 || 12;  
                case 'hh': return zeroize(date.getHours() % 12 || 12);  
                case 'H': return date.getHours();  
                case 'HH': return zeroize(date.getHours());  
                case 'm': return date.getMinutes();  
                case 'mm': return zeroize(date.getMinutes());  
                case 's': return date.getSeconds();  
                case 'ss': return zeroize(date.getSeconds());  
                case 'l': return date.getMilliseconds();  
                case 'll': return zeroize(date.getMilliseconds());  
                case 'tt': return date.getHours() < 12 ? 'am' : 'pm';  
                case 'TT': return date.getHours() < 12 ? 'AM' : 'PM';  
            }  
        });  
    }
    
    document.writeln(new Date().format("yyyy-MM-dd hh:mm:ss"));  
    

    5 Python 日期格式化

    Python 处理日期主要使用 time,datetime 两个库

    import time
    import datetime
    
    t = "2017-11-24 17:30:00"
    struct_time1 = time.strptime(t, "%Y-%m-%d %H:%M:%S")
    time_stamp = int(time.mktime(struct_time1))
    
    struct_time2 = time.localtime(timeStamp)
    
    format_time1 = time.strftime("%Y-%m-%d %H:%M:%S", struct_time2) 
    format_time2 = time.strftime("%Y/%m/%d %H:%M:%S", struct_time2)
    
    now_timestamp = int(time.time())
    
    
    展开全文
  • js 格式化时间

    2020-07-15 09:33:32
    function formatTime (time, format) { time = typeof(time) === "number" ? time : (time instanceof Date ? time.getTime() : parseInt(time)); if(isNaN(time)) return null; if(typeof(format) !...
    function formatTime(time, format) {
      time = typeof (time) === "number" ? time : (time instanceof Date ? time.getTime() : parseInt(time));
      if (isNaN(time)) return null;
      if (typeof (format) !== 'string' || !format) format = 'yyyy-MM-dd hh:mm:ss';
      let _time = new Date(time);
      time = _time.toString().split(/[\s\:]/g).slice(0, -2);
      time[1] = ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12'][_time.getMonth()];
      let _mapping = {
        MM: 1,
        dd: 2,
        yyyy: 3,
        hh: 4,
        mm: 5,
        ss: 6
      };
      return format.replace(/([Mmdhs]|y{2})\1/g, (key) => time[_mapping[key]]);
    }
    // 调用
    this.formatTime(new Date(), 'yyyy-MM-dd');
    this.formatTime(new Date(), 'yyyy-MM-dd hh:mm:ss');
    
    展开全文
  • 时间格式化(SimpleDateFormat)

    万次阅读 2019-02-13 13:13:22
    使用 Date 类的默认无参构造方法创建出的对象就代表当前时间,我们可以直接输出 Date 对象显示当前的时间,显示的结果如下: public static void main(String[] args){ Date date = new Date(); System.out.println...

     

     

    使用 Date 类的默认无参构造方法创建出的对象就代表当前时间,我们可以直接输出 Date 对象显示当前的时间,显示的结果如下:

    public static void main(String[] args){ Date date = new Date(); System.out.println(date); // Mon Feb 11 21:58:30 CST 2019 }

     

     

    //转换时格式间 Date和SimpleDateFormat //yyyy 表示四位年, MM 表示两位月份, dd 表示两位日期, HH 表示小时(使用24小时制), mm 表示分钟, ss 表示秒 // 使用 format() 方法将日期转换为指定格式的文本 Date datenow = new Date(); SimpleDateFormat ft = new SimpleDateFormat("yyyy.MM.dd hh:mm:ss"); System.out.println(ft.format(datenow));

     

     

    注意:

    1、 调用 SimpleDateFormat 对象的 parse() 方法时可能会出现转换异常,即 ParseException ,因此需要进行异常处理

    2、 使用 Date 类时需要导入 java.util 包,使用 SimpleDateFormat 时需要导入 java.text

     

     

    示例代码:

    public static void main(String[] args){ // 使用format()方法将日期转换为指定格式的文本 SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒"); SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy/MM/dd HH:mm"); SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 创建Date对象,表示当前时间 Date now = new Date(); // 调用format()方法,将日期转换为字符串并输出 System.out.println(sdf1.format(now));//2019年02月11日 21时50分48秒 System.out.println(sdf2.format(now));//2019/02/11 21:50 System.out.println(sdf3.format(now));//2019-02-11 21:50:48 // 使用parse()方法将文本转换为日期 String d = "2019-2-11 21:50:36"; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // 调用parse()方法,将字符串转换为日期 try { //注意一定要和指定的格式匹配 Date date =sdf.parse(d); System.out.println(date);//Mon Feb 11 21:50:36 CST 2019 }catch(ParseException e){ e.printStackTrace(); } }

     

    展开全文
  • 时间设置及格式化

    2018-01-17 11:19:20
    获取当前手机系统时间 Calendar current = Calendar.getInstance(); 时间设置 //获取手机当前系统时间 Calendar current = Calendar.getInstance(); //假设当前时间为某一具体时间,如workDate //...
  • 时间日期格式化用法

    千次阅读 2014-02-21 17:54:21
    另附上时间格式化详细用法: ======================= 格式字符 关联属性/说明  d ShortDatePattern  D LongDatePattern  f 完整日期时间(长日期和短时间)  F FullDateTimePattern(长日期和长...
  • 格式化时间

    2019-10-02 15:38:19
    格式化时间 软件中的日期格式化 1.日期格式化就是对日期字符串进行解析和格式化输出 2.在软件系统中,展现层的日期数据为字符串,逻辑层的日期为Date对象,存储层的日期数据为时间戳 3.日期格式化就是在不同层次...
  • 格式化时间

    2019-01-24 23:04:10
    //格式化时间 function dateFtt(fmt,date){ //author: meizz var o = { "M+" : date.getMonth()+1, //月份 "d+" : date.getDate(), //日 "h+" : date.getHours(), ...
  • js格式化时间

    千次阅读 2018-11-11 14:52:34
    1.JS格式化时间方法 格式一: 2018-1-29-10:34:49  var curr_time = new Date();  Myformatter(curr_time);  function myformatter(date){ var strDate = date.getFullYear()+"-"; ...
  • js-格式化时间

    千次阅读 2018-11-05 23:15:47
    1.作用:该工具类用来格式化日期 2.含义:参数date:要格式化时间;format:转换的日期格式 3.示例:将时间戳转换为’yyyy-MM-dd’日期格式。调用下面的函数formatDate(1541430824000, ‘yyyy-MM-dd’) 4.转换结果...
  • java时间格式化处理

    万次阅读 2018-07-26 09:21:31
    1、通过MessageFormat转化 String dateTime = MessageFormat.format("{0,date,yyyy-MM-dd-HH-mm:ss:ms}" ,  new Object[] {  ...
  • 1:单纯是从HTML中格式化时间,使用 &lt;fmt:formatDatevalue="${templateUnit.creTime}" pattern="yyyy-MM-dd"/&gt; 如果需要限制样式,那么这样也是可以的。如下: &lt;input ...
  • 日期时间格式由 日期时间模式字符串 指定。...只是在格式化时将它们简单复制到输出字符串白话文的讲:这些A——Z,a——z这些字母(不被单引号包围的)会被特殊处理替换为对应的日期时间,其他的字...
  • 使用moment格式化日期

    万次阅读 多人点赞 2018-09-28 11:59:01
    案例:本例是在react-native中格式化日期 1,引入moment 2,使用moment 例如:let startDate = moment('2018-09-27').format(YYYY-MM-DD); moment使用详解: 格式化日期 当前时间: moment().format('...
  • thymeleaf html 格式化时间 格式化日期

    千次阅读 2019-01-29 19:02:26
    &lt;!DOCTYPE html&gt; &lt;html lang="en"&gt; &lt;html xmlns:th="http://www.thymeleaf.org"&gt; &lt;head&gt; &lt;meta charset=".../title&am
  • javascript Date format(js日期格式化)

    万次阅读 多人点赞 2010-06-02 19:04:00
    这个很不错,好像是 csdn 的 Meizz 写的: // 对Date的扩展,将 Date 转化为指定格式的String // 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符, // 年(y)可以用 1-4 个占位符,毫秒(S)只能用...
  • 使用fmt函数需在jsp中引入 &lt;%@ taglib prefix="fmt" uri="... %&gt;发布时间:&lt;fmt:formatDate value="${requireInfoBean....会报错,因为时间是string类型,不能转换为da
  • 还在用SimpleDateFormat格式化时间?小心经理锤你 场景 本来开开心心的周末时光,线上突然就疯狂报错,以为程序炸了,截停日志,发现是就是类似下述一段错误 java.lang.NumberFormatException: For input string: "....
  • spring: jackson: date-format:yyyy-MM-ddHH:mm:ss time-zone:Asia/Shanghai 方法一:可以在apllication.property加入下面配置就可以 #时间戳统一转换 spring.jackson.date-format=yyyy-MM-dd HH:...sp...
  • JavaScript格式化时间日期

    千次阅读 2018-10-08 14:24:07
    1. Date 对象方法 toLocaleString() 根据本地时间格式,把 Date 对象转换为字符串。 "2018/10/8 上午8:00:00" toLocaleTimeString() 根据本地时间格式,把 ... 根据本地时间格式,把 Date 对象的日期部...

空空如也

1 2 3 4 5 ... 20
收藏数 1,130,808
精华内容 452,323
关键字:

格式化时间