日期和时间的调整及格式

Parent Previous Next


temporalParse函数能够把字符串转换成DolphinDB中的时序类型数据,temporalFormat函数能够把DolphinDB中的时序对象转换成指定格式的字符串。


下表是DolphinDB时序对象的格式:


格式

含义

范围

yyyy

年份(4个数字)

1000-9999

yy

年份(2个数字)

00-99. (00-39: 2000-2039; 40-99: 1940-1999)

MM

月份

1-12

MMM

月份

JAN, FEB, ... DEC (不区分大小写)

dd

日期

1-31

HH

时(24小时制)

0-23

hh

时(12小时制)

0-11

mm

分钟

0-59

ss

0-59

aa

上午/下午

AM, PM. (不区分大小写)

SSS

毫秒

0-999

nnnnnn

微秒

0-999999

nnnnnnnnn

纳秒

0-999999999


temporalParsetemporalFormat中的format参数有以下两种表示方式:



对于format参数,除了 y, M, d, H, h, m, s, a, S, n以外的符号的字符都可以作为分隔符。format参数中的分隔符需要与输入字符串中的分隔符一致。



>temporalParse("14-02-2018","dd-MM-yyyy");

2018.02.14


>temporalParse("14-02-2018","dd/MM/yyyy");

00d


>temporalParse("14//02//2018","dd//MM//yyyy");

2018.02.14


>temporalParse("14//02//2018","dd/MM/yyyy");

00d


>temporalParse("14//02//2018","dd..MM..yyyy");

00d



我们可以使用单个字母来简化格式。例如,使用"y/M/d"代替"yyyy/MM/dd"。因为"y"可以表示"yyyy"和"yy",系统会根据数字的个数采用"yyyy"或"yy"。



>temporalParse("14-02-18","d-M-y");

2018.02.14


>temporalParse("2018/2/6 02:33:01 PM","y/M/d h:m:s a");

2018.02.06T14:33:01



"MMM","SSS", "nnnnnn" , "nnnnnnnnn"不能使用单个字母。



>temporalParse("02-FEB-2018","d-MMM-y");

2018.02.02


>temporalParse("02-FEB-2018","d-M-y");

00d


>temporalParse("13:30:10.001","H:m:s.SSS");

13:30:10.001


>temporalParse("13:30:10.001","H:m:s.S");

Invalid temporal format: 'H:m:s.S'. Millisecond (S) must have three digits.


>temporalParse("13:30:10.008001","H:m:s.nnnnnn");

13:30:10.008001000


>temporalParse("13:30:10.008001","H:m:s.n");

Invalid temporal format: 'H:m:s.n'. Nanosecond (n) must have six or nine digits.



temporalParse函数解释输入字符串中数字个数的方式是非常灵活的。



>temporalParse("2-4-18","d-M-y");

2018.04.02


>temporalParse("2-19-6","H-m-s");

02:19:06


>temporalParse("002-019-006","H-m-s");

02:19:06



对于毫秒,微秒和纳秒,对应的数字位个数必须是3,6,9.



>temporalParse("2018/2/6 13:30:10.001","y/M/d H:m:s.SSS");

2018.02.06T13:30:10.001


>temporalParse("2018/2/6 13:30:10.01","y/M/d H:m:s.SSS");

00T


>temporalParse("2018/2/6 13:30:10.000001","y/M/d H:m:s.nnnnnn");

2018.02.06T13:30:10.000001000


>temporalParse("2018/2/6 13:30:10.0000010","y/M/d H:m:s.nnnnnn");

00N




对于这种表示方式,format参数必须与上述表格中的格式对应,不能使用单个字母来表示格式。



>temporalParse("20180214","yyyyMMdd");

2018.02.14


>temporalParse("122506","MMddyy");

2006.12.25


>temporalParse("155950","HHmmss");

15:59:50


>temporalParse("035901PM","hhmmssaa");

15:59:01


>temporalParse("02062018155956001000001","MMddyyyyHHmmssnnnnnnnnn");

2018.02.06T15:59:56.001000001