(个人Demo)【JAVA 】 Double 转 时间

初学java 遇到了需要将double类型转成时间的
找了很多方法,也没有直接转化的方法(可能是自己没有找详细) 所以就自己写了一下实现


		double dVal = 8.5;
			//转化成分钟
			dVal = dVal*60;
			//取小时数
			Integer h = (int)Math.floor(dVal/60) ;
			//取分钟数
			Integer m =(int)Math.floor(dVal%60) ;
			String str =h+":"+m+":00";
			Date date = new Date();
			//date1 取日期
			SimpleDateFormat sd = new SimpleDateFormat( "yyyy-MM-dd");
			String date1 = sd.format(date);
			DateFormat sdf = new SimpleDateFormat("HH:mm:ss");
			try {
					// date2 取时间
					String date2 = sdf.format(sdf.parse(str));
					String time =  date1 +" "+date2;
					System.out.println(date);
					System.out.println(date1);
					System.out.println(date2);
					System.out.println(time);
			} catch (Exception e) {
				e.printStackTrace();
			}

初学者,如果大佬看到了觉得有更好的实现方法,或者需要我改进的地方直接向小弟提出来

下面是一个简单的 Flink 计算广告点击率的 Java 示例代码: ```java import org.apache.flink.api.common.functions.AggregateFunction; import org.apache.flink.api.java.tuple.Tuple; import org.apache.flink.api.java.tuple.Tuple2; import org.apache.flink.streaming.api.TimeCharacteristic; import org.apache.flink.streaming.api.datastream.DataStream; import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment; import org.apache.flink.streaming.api.functions.KeyedProcessFunction; import org.apache.flink.streaming.api.functions.timestamps.AscendingTimestampExtractor; import org.apache.flink.streaming.api.windowing.time.Time; import org.apache.flink.util.Collector; public class AdClickRateDemo { public static void main(String[] args) throws Exception { // 设置执行环境 StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); env.setStreamTimeCharacteristic(TimeCharacteristic.EventTime); // 读取数据源 DataStream<String> inputStream = env.socketTextStream("localhost", 9999); // 换数据格式 DataStream<AdClickEvent> adClickEventStream = inputStream.map(line -> { String[] fields = line.split(","); return new AdClickEvent(Long.parseLong(fields[0]), Long.parseLong(fields[1]), fields[2], fields[3], Long.parseLong(fields[4])); }).assignTimestampsAndWatermarks(new AscendingTimestampExtractor<AdClickEvent>() { @Override public long extractAscendingTimestamp(AdClickEvent element) { return element.getTimestamp(); } }); // 按广告 ID 分组计算点击量和展示量 DataStream<Tuple2<String, Long>> adClickCountStream = adClickEventStream .keyBy("adId") .timeWindow(Time.minutes(1), Time.seconds(10)) .aggregate(new AdClickEventAggFunc()); // 过滤点击率小于阈值的广告 DataStream<String> filteredAdStream = adClickCountStream .keyBy(0) .process(new AdClickRateFilterFunc(0.01)); // 输出结果 filteredAdStream.print(); env.execute("Ad Click Rate Demo"); } // 广告点击事件 public static class AdClickEvent { private long userId; private long adId; private String province; private String city; private long timestamp; public AdClickEvent() {} public AdClickEvent(long userId, long adId, String province, String city, long timestamp) { this.userId = userId; this.adId = adId; this.province = province; this.city = city; this.timestamp = timestamp; } // getters and setters } // 广告点击量和展示量统计函数 public static class AdClickEventAggFunc implements AggregateFunction<AdClickEvent, Tuple2<Long, Long>, Tuple2<String, Long>> { @Override public Tuple2<Long, Long> createAccumulator() { return Tuple2.of(0L, 0L); } @Override public Tuple2<Long, Long> add(AdClickEvent value, Tuple2<Long, Long> accumulator) { return Tuple2.of(accumulator.f0 + 1, accumulator.f1); } @Override public Tuple2<String, Long> getResult(Tuple2<Long, Long> accumulator) { return Tuple2.of(String.valueOf(accumulator.f1), accumulator.f0); } @Override public Tuple2<Long, Long> merge(Tuple2<Long, Long> a, Tuple2<Long, Long> b) { return Tuple2.of(a.f0 + b.f0, a.f1 + b.f1); } } // 过滤点击率小于阈值的广告函数 public static class AdClickRateFilterFunc extends KeyedProcessFunction<Tuple, Tuple2<String, Long>, String> { private double clickRateThreshold; public AdClickRateFilterFunc(double clickRateThreshold) { this.clickRateThreshold = clickRateThreshold; } @Override public void processElement(Tuple2<String, Long> value, Context ctx, Collector<String> out) throws Exception { double clickRate = (double) value.f1 / ctx.timerService().currentProcessingTime(); if (clickRate > clickRateThreshold) { out.collect(value.f0); } } } } ``` 注意,这只是一个简单示例,实际应用中可能需要更复杂的数据处理和计算逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值