Date.getTime()返回自1970年1月1日以来的毫秒数.Unixtime是自1970年1月1日以来的秒数.我通常不用java编写代码,但我正在修复一些错误.我有:
Date now = new Date();
Long longTime = new Long(now.getTime()/1000);
return longTime.intValue();
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法在java中获得unixtime?
UPDATE
根据John M的建议,我最终得到:
Date now = new Date();
Long longTime = new Long(now.getTime()/1000);
return longTime.intValue();
Run Code Online (Sandbox Code Playgroud) 可能重复:
从Date()获取unix时间戳
我有约会
Fri, 09 Nov 2012 23:40:18 GMT
Run Code Online (Sandbox Code Playgroud)
我应该如何将它转换为Unix时间戳,如java中的'1352504418'
我试图了解如何在 Kafka Source 的WatermarkStrategy中使用withTimestampAssigner()。我需要使用的“时间”位于消息有效负载内。
为此,我有以下代码:
FlinkKafkaConsumer<Event> kafkaData =
new FlinkKafkaConsumer("CorID_0", new EventDeserializationSchema(), p);
kafkaData.assignTimestampsAndWatermarks(
WatermarkStrategy
.forMonotonousTimestamps()
.withTimestampAssigner(Event, Event.time))
DataStream<Event> stream = env.addSource(kafkaData);
Run Code Online (Sandbox Code Playgroud)
其中 EventDeserializationSchema() 是这样的:
public class EventDeserializationSchema implements DeserializationSchema<Event> {
private static final long serialVersionUID = 1L;
private static final CsvSchema schema = CsvSchema.builder()
.addColumn("firstName")
.addColumn("lastName")
.addColumn("age", CsvSchema.ColumnType.NUMBER)
.addColumn("time")
.build();
private static final ObjectMapper mapper = new CsvMapper();
@Override
public Event deserialize(byte[] message) throws IOException {
return mapper.readerFor(Event.class).with(schema).readValue(message);
}
@Override
public boolean isEndOfStream(Event nextElement) { …Run Code Online (Sandbox Code Playgroud) 编辑:我已经编辑了我的问题以包含更多信息,我已经尝试了很多方法来做到这一点,在StackOverflow上问一个问题通常是我的最后一招.任何帮助是极大的赞赏.
我有一个YYYYMMDDHHMMSS格式的日期(它是一个Timestamp对象)(例如20140430193247).这是从我的服务发送到前端,使用AngularJS格式显示它:date:'dd/MM/yyyy'.
如何将其转换为Epoch/Unix时间?
我已经尝试了与此相关的重复问题,我得到的是另一个日期.
我也尝试过以下方法:
A:
//_time == 20140430193247
return _time.getTime()/1000; // returns 20140430193 - INCORRECT
Run Code Online (Sandbox Code Playgroud)
B:
return _time.getTime(); // returns 20140430193247 (Frontend: 23/03/2608) - INCORRECT
Run Code Online (Sandbox Code Playgroud)
C:
Date date = new Date();
//_time = 20140501143245 (i.e. 05/01/2014 14:32:45)
String str = _time.toString();
System.out.println("Time string is " + str);
//Prints: Time string is 2608-03-24 15:39:03.245 meaning _time.toString() cannot be used
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
try {
date = df.parse(str);
} catch (ParseException e) {
}
return date; // returns …Run Code Online (Sandbox Code Playgroud)