Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Apache配置单元中的Unix\u时间戳_Java_Date_Time_Hive_Hiveql - Fatal编程技术网

Java Apache配置单元中的Unix\u时间戳

Java Apache配置单元中的Unix\u时间戳,java,date,time,hive,hiveql,Java,Date,Time,Hive,Hiveql,我正在尝试转换字符串日期“Sat Jan 25 00:13:31+0000 2014” 使用Unix_timestamp()HiveQL函数执行Unix Timestap 将具有给定模式的时间字符串转换为Unix时间戳(以秒为单位), 如果失败,则返回0:unix_时间戳('2009-03-20','yyyy-MM-dd')=1237532400 Java文档 配置单元中的unix_时间戳(“2014年1月”、“yyyy月”)返回空值 该函数似乎只适用于以整数(即MM)表示的月份。 解决方案?

我正在尝试转换字符串日期“Sat Jan 25 00:13:31+0000 2014” 使用Unix_timestamp()HiveQL函数执行Unix Timestap

将具有给定模式的时间字符串转换为Unix时间戳(以秒为单位), 如果失败,则返回0:unix_时间戳('2009-03-20','yyyy-MM-dd')=1237532400

Java文档

配置单元中的unix_时间戳(“2014年1月”、“yyyy月”)返回空值

该函数似乎只适用于以整数(即MM)表示的月份。
解决方案?

看似不可思议,但在除1月(1月)外的其他月份,它都能奏效

unix_timestamp('Feb 1 18:41:57 +0000 2014','MMM dd HH:mm:ss Z yyyy')
==> 1391280117

星期几的EEE模式不起作用…

解决了,问题是我的linux系统的本地化。

使用java.time 在Java方面,使用Java.time类进行解析。这个班级代表一年零一个月

DateTimeFormatter f = DateTimeFormatter.ofPattern( "MMM-yyyy" );
YearMonth ym = YearMonth.parse( "Jan-2014" , f );
从那以后,我们可以得到一个月的第一天

如果要为配置单元提供仅限日期的值,请以标准SQL格式提供字符串。对于仅日期值,SQL格式与格式一致。在解析或生成字符串时,java.time类默认使用标准ISO 8601格式

String output = today.toString(); // YYYY-MM-DD format per ISO 8601 standard.
显然,您需要一个日期时间值。我们可以任意分配一天中的第一个时刻。日期的含义和确定第一个时刻取决于时区。对于任何给定的时刻,一天中的日期和时间在全球各地因时区而异

ZoneId zoneId = ZoneId.of( "America/Montreal" );
ZonedDateTime zdt = today.atStartOfDay( z );
由此,您可以在UTC(
1970-01-01T00:00:00Z
)中生成自1970年初以来的整秒数,以馈送到蜂巢

long secondsSinceEpoch = zdt.toEpochSecond();
1388534400

如果要转到另一个方向,则需要完成
Instant
类。该类表示时间线上的一个时刻,分辨率为(小数点的九(9)位)

如果要查看某个区域的时间,请应用时区

ZoneId zoneId = ZoneId.of( "America/Montreal" );
ZonedDateTime zdt = instant.atZone( z );
关于java.time 该框架内置于Java8及更高版本中。这些类取代了麻烦的旧日期时间类,例如,&

该项目现已启动,建议迁移到java.time

要了解更多信息,请参阅。并搜索堆栈溢出以获得许多示例和解释

大部分java.time功能都在中向后移植到java 6和7,并进一步适应于中(请参阅)

该项目使用其他类扩展了java.time。这个项目是java.time将来可能添加的一个试验场。您可以在这里找到一些有用的类,例如、、和

Instant instant = Instant.ofEpochSecond( 1_388_534_400L );
ZoneId zoneId = ZoneId.of( "America/Montreal" );
ZonedDateTime zdt = instant.atZone( z );