本文将分享pandas将具有unix时间戳的详细内容,并且还将对以毫秒为单位的行转换为日期时间进行详尽解释,此外,我们还将为大家带来关于date–如何设置当前的Unix时间(以毫秒为单位)?、Free
本文将分享pandas将具有unix时间戳的详细内容,并且还将对以毫秒为单位的行转换为日期时间进行详尽解释,此外,我们还将为大家带来关于date – 如何设置当前的Unix时间(以毫秒为单位)?、Freemarker 将时间戳(以毫秒为单位)转换为带时区的日期、log4j ConversionPattern时间戳(以微秒为单位)、log4j:当前时间(以毫秒为单位)的相关知识,希望对你有所帮助。
本文目录一览:- pandas将具有unix时间戳(以毫秒为单位)的行转换为日期时间(pandas时间戳转化为时间)
- date – 如何设置当前的Unix时间(以毫秒为单位)?
- Freemarker 将时间戳(以毫秒为单位)转换为带时区的日期
- log4j ConversionPattern时间戳(以微秒为单位)
- log4j:当前时间(以毫秒为单位)
pandas将具有unix时间戳(以毫秒为单位)的行转换为日期时间(pandas时间戳转化为时间)
我需要处理大量CSV文件,其中时间戳始终是代表以毫秒为单位的unix时间戳的字符串。我找不到有效修改这些列的方法。
这就是我想出的,但是,这当然只重复了该列,而我不得不以某种方式将其放回原始数据集。我确定创建DataFrame
?时可以做到。
import sysif sys.version_info[0] < 3: from StringIO import StringIOelse: from io import StringIOimport pandas as pddata = ''RUN,UNIXTIME,VALUE\n1,1447160702320,10\n2,1447160702364,20\n3,1447160722364,42''df = pd.read_csv(StringIO(data))convert = lambda x: datetime.datetime.fromtimestamp(x / 1e3)converted_df = df[''UNIXTIME''].apply(convert)
这将选择“ UNIXTIME”列,并将其更改为
0 14471607023201 14471607023642 1447160722364Name: UNIXTIME, dtype: int64
进入这个
0 2015-11-10 14:05:02.3201 2015-11-10 14:05:02.3642 2015-11-10 14:05:22.364Name: UNIXTIME, dtype: datetime64[ns]
但是,我想使用类似的方法pd.apply()
来获取转换后的列返回的整个数据集,或者像我已经写的那样,仅在从CSV生成DataFrame时创建日期时间。
答案1
小编典典您可以使用to_datetime
arg并将其传递为后处理步骤unit=''ms''
:
In [5]:df[''UNIXTIME''] = pd.to_datetime(df[''UNIXTIME''], unit=''ms'')dfOut[5]: RUN UNIXTIME VALUE0 1 2015-11-10 13:05:02.320 101 2 2015-11-10 13:05:02.364 202 3 2015-11-10 13:05:22.364 42
date – 如何设置当前的Unix时间(以毫秒为单位)?
date --set="2011-12-07 01:20:15.962" && date --rfc-3339=ns
原始问题
我可以像毫秒一样得到日期:
date +"%s.%N" date --rfc-3339=ns
根据man date,我希望能够这样设置:
date --set=%s.%N +`date +"%s.%N"` date --set="%s.%N" "+1323217126.085882000"
根据my googling我希望能够像这样设置日期(与上面相反):
date +%s.%N -s `date +"%s.%N"` date +"%s.%N" -s "1323217126.085882000"
都没有工作.有人能在这个问题上提醒我吗?
附:不,我不需要纳秒分辨率.是的,我知道bash执行需要几毫秒.我真正需要的是亚秒级分辨率,十分之一秒就足够了.
date --set="2011-12-07 01:20:15.962" && date --rfc-3339=ns
注意延迟:
CURTIME=`date --rfc-3339=ns` date --set="${CURTIME}" NEWTIME=`date --rfc-3339=ns` echo ${CURTIME} echo ${NEWTIME} 2011-12-07 01:48:54.687216122+00:00 2011-12-07 01:48:54.720541318+00:00
正如您将注意到的,引入了整整毫秒的延迟.这是由于为初始化内存和加载日期二进制文件所花费的时间.这适用于所有shell和insert-higher-level-language-exec的exec
但是,如果你只需要在10秒钟范围内的亚秒级分辨率,这在很多情况下都足够好了.
Freemarker 将时间戳(以毫秒为单位)转换为带时区的日期
如何解决Freemarker 将时间戳(以毫秒为单位)转换为带时区的日期?
我可以使用以下格式将毫秒转换为日期:
${createdTime?number_to_datetime?string("yyyy-MM-dd HH:mm:ss")}
输出为:2021-07-22 11:02:38
现在我想给它添加一个时区 Asia/Colombo
,有什么办法可以给 freemarker number_to_datetime
格式添加一个时区吗?
解决方法
从 2.3.31 开始,您无法直接将时区传递给 ?string
。 (您可以使用 ?iso(timeZone)
和它的朋友,但只能输出 ISO 格式。)
但是,您可以使用 <#setting time_zone=''Asia/Colombo''>
更改时区。之后,所有内容都将在该时区进行格式化(我的意思是在同一个顶级模板执行期间)。不过,这可能是不需要的,您想将其改回原来的样子。在那种情况下,想法是这样的:
<#macro withTimeZone tz>
<#local lastTZ = .time_zone>
<#setting time_zone = tz>
<#nested>
<#setting time_zone = lastTZ>
</#macro>
所以现在你可以这样做了:
<@withTimeZone "Asia/Colombo">${.now?string(''yyyy-MM-dd HH:mm:ss'')}</@>
当然,您也可以用它包围更大的模板部分。
请注意,.time_zone
是在 FreeMarker 2.3.31 中添加的。
log4j ConversionPattern时间戳(以微秒为单位)
我想在用log4j生成的日志文件的每个条目的时间戳中添加微秒,这可能吗?
我已经搜索了官方文档,但是没有提到毫秒以下的单位。
现在我有一个转换模式,如下所示:
%d{dd/MM/yyyy HH\:mm\:ss,SSS} %-5p [%t] - %m%n
在日期转换模式( %d* )中,我想在毫秒值( SSS )之后添加 微秒 ,有没有办法做到这一点? *
答案1
小编典典如果要显示微秒,则需要自己添加。可以使用自定义格式化程序(而不是PatternFormatter)来完成
log4j:当前时间(以毫秒为单位)
在log4j.properties
我可以设置PatternLayout
例如("[%p] %c - %m - %d %n")
是否有任何符号(%something)以毫秒为单位返回当前时间?
关于pandas将具有unix时间戳和以毫秒为单位的行转换为日期时间的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于date – 如何设置当前的Unix时间(以毫秒为单位)?、Freemarker 将时间戳(以毫秒为单位)转换为带时区的日期、log4j ConversionPattern时间戳(以微秒为单位)、log4j:当前时间(以毫秒为单位)的相关知识,请在本站寻找。
本文标签: