Add milliseconds to timestamp (bash, unix)

2019-07-03 18:54发布

EDIT: This is apparently not possible, see Barmars answer below.

I use the command below a lot to create a timestamp for archiving purposes. I'd like to add milliseconds to the string. Is that possible? I use this script on both osx and linux, so a solution that works on both would be nice. Are seconds ever rounded up or down with or without milliseconds? (Are minutes rounded up or down?)

date -n +%Y%m%d%H%M%S

3条回答
甜甜的少女心
2楼-- · 2019-07-03 19:16

%N gives you nanoseconds and you could divide that by 1000000

查看更多
放我归山
3楼-- · 2019-07-03 19:26

In general you can't, but I thought I'd mention that in ts, you can use "%.S" for millisecond precision. Just in case you were using date to timestamp output lines.

查看更多
smile是对你的礼貌
4楼-- · 2019-07-03 19:31

I don't think there's a way to do this portably. See the POSIX strftime specification, it doesn't mention anything about milliseconds or nanoseconds.

Furthermore, the input to strftime is a struct tm. The specification of this structure is here and it doesn't include anything more precise than seconds. Nanoseconds are in the timespec structure, but this is mostly used for time periods, not clock time, and there's no requirement for the system to maintain the clock time to more than second resolution.

查看更多
登录 后发表回答