java和golang的时间格式的简明介绍

1,260 阅读4分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

时间戳和时间格式

1.Java下的时间格式

import java.util.Date;
public class DateDemo {
   public static void main(String[] args) {
       // 初始化 Date 对象
       Date date = new Date();     
       // 使用 toString() 函数显示日期时间
       System.out.println(date.toString());
   }
}

输出的格式

Mon May 04 09:51:52 CDT 2013

这个格式不是很好阅读,换个正常的

import  java.util.*;
import java.text.*;
 
public class DateDemo {
   public static void main(String[] args) {
      Date dNow = new Date( );
      SimpleDateFormat ft = new SimpleDateFormat ("yyyy-MM-dd hh:mm:ss");
      System.out.println("当前时间为: " + ft.format(dNow));
  }
}

$: 当前时间为: 2022-01-26 10:16:34

SimpleDateFormat ft = new SimpleDateFormat ("yyyy-MM-dd hh:mm:ss"); 中的 "yyyy-MM-dd hh:mm:ss" 是啥?

字母(注意大小写)含义示例
y年份一般用 yy 表示两位年份,yyyy 表示 4 位年份 使用 yy 表示的年扮,如 11;使用 yyyy 表示的年份,如 2011
M月份一般用 MM 表示月份,如果使用 MMM,则会根据语言环境显示不同语言的月份 使用 MM 表示的月份,如 05;使用 MMM 表示月份,在 Locale.CHINA语言环境下,如“十月”;在 Locale.US语言环境下,如 Oct
d月份中的天数一般用 dd 表示天数 使用 dd 表示的天数,如 10
D年份中的天数表示当天是当年的第几天, 用 D 表示 使用 D 表示的年份中的天数,如 295
E星期几用 E 表示,会根据语言环境的不同, 显示不同语言的星期几 使用 E 表示星期几,在 Locale.CHINA 语言环境下,如“星期四”;在 Locale.US 语言环境下,如 Thu
H一天中的小时数(0~23)一般用 HH 表示小时数 使用 HH 表示的小时数,如 18
h一天中的小时数(1~12)一般使用 hh 表示小时数 使用 hh 表示的小时数,如 10 (注意 10 有可能是 10 点,也可能是 22 点)
m分钟数一般使用 mm 表示分钟数 使用 mm 表示的分钟数,如 29
s秒数一般使用 ss 表示秒数 使用 ss 表示的秒数,如 38
S毫秒数一般使用 SSS 表示毫秒数 使用 SSS 表示的毫秒数,如 156
Z时区Eastern Standard Time
c包括全部日期和时间信息星期六 十月 27 14:21:20 CST 2007
F"年-月-日"格式2007-10-27
D"月/日/年"格式10/27/07
r"HH:MM:SS PM"格式(12时制)02:25:51 下午
T"HH:MM:SS"格式(24时制)14:28:16
R"HH:MM"格式(24时制)14:28

2.测试代码

import java.util.Date;
 
public class DateDemo {
 
  public static void main(String[] args) {
     // 初始化 Date 对象
     Date date = new Date();
 
     //c的使用  
    System.out.printf("全部日期和时间信息:%tc%n",date);          
    //f的使用  
    System.out.printf("年-月-日格式:%tF%n",date);  
    //d的使用  
    System.out.printf("月/日/年格式:%tD%n",date);  
    //r的使用  
    System.out.printf("HH:MM:SS PM格式(12时制):%tr%n",date);  
    //t的使用  
    System.out.printf("HH:MM:SS格式(24时制):%tT%n",date);  
    //R的使用  
    System.out.printf("HH:MM格式(24时制):%tR",date);  
  }
}

3. golang下的时间格式

const (
  ANSIC    = "Mon Jan _2 15:04:05 2006"
  UnixDate  = "Mon Jan _2 15:04:05 MST 2006"
  RubyDate  = "Mon Jan 02 15:04:05 -0700 2006"
  RFC822   = "02 Jan 06 15:04 MST"
  RFC822Z   = "02 Jan 06 15:04 -0700" // RFC822 with numeric zone
  RFC850   = "Monday, 02-Jan-06 15:04:05 MST"
  RFC1123   = "Mon, 02 Jan 2006 15:04:05 MST"
  RFC1123Z  = "Mon, 02 Jan 2006 15:04:05 -0700" // RFC1123 with numeric zone
  RFC3339   = "2006-01-02T15:04:05Z07:00"
  RFC3339Nano = "2006-01-02T15:04:05.999999999Z07:00"
  Kitchen   = "3:04PM"
  // Handy time stamps.
  Stamp   = "Jan _2 15:04:05"
  StampMilli = "Jan _2 15:04:05.000"
  StampMicro = "Jan _2 15:04:05.000000"
  StampNano = "Jan _2 15:04:05.000000000"
)

这个和java的字符替换格式不太一样以下是对照表

占位符含义示例
01/Jan2006-01-02
022006-01-02
03/15小时15:04:05
04分钟15:04:05
0515:04:05
062006 (这个06只能表示2位年,是否会有问题?)
-07[00][:00]时差/时区
PM上下午
Mon星期几