long long类型转Qtime
时间: 2023-10-11 15:05:34 浏览: 153
将long long类型转换为QTime需要先将long long类型转换为QDateTime,然后再使用QDateTime的time()方法获取QTime类型。示例代码如下:
```cpp
long long timestamp = 1626769081000; // 示例long long类型时间戳
QDateTime datetime = QDateTime::fromMSecsSinceEpoch(timestamp); // 将long long类型转换为QDateTime类型
QTime time = datetime.time(); // 获取QDateTime类型的时间
```
其中,fromMSecsSinceEpoch()方法可以将long long类型的时间戳转换为QDateTime类型。如果需要将当前时间转换为QTime类型,则可以使用QTime的currentTime()方法获取当前时间。示例代码如下:
```cpp
QTime time = QTime::currentTime(); // 获取当前时间
```
相关问题
linux下用getopt_long实现ls命令的代码
可以参考以下代码:
```
#include <stdio.h>
#include <getopt.h>
#include <stdlib.h>
#include <unistd.h>
#include <dirent.h>
#include <sys/stat.h>
#include <string.h>
#define MAX_PATH 1024
static struct option long_options[] = {
{"all", no_argument, NULL, 'a'},
{"list", no_argument, NULL, 'l'},
{"help", no_argument, NULL, 'h'},
{NULL, 0, NULL, 0}
};
int main(int argc, char** argv) {
int opt;
int all_flag = 0, list_flag = 0;
char path[MAX_PATH] = ".";
while ((opt = getopt_long(argc, argv, "alh", long_options, NULL)) != -1) {
switch (opt) {
case 'a':
all_flag = 1;
break;
case 'l':
list_flag = 1;
break;
case 'h':
printf("Usage: ls [OPTION] [DIRECTORY]\n");
printf("List information about the FILEs (the current directory by default).\n\n");
printf("Options:\n");
printf(" -a, --all do not ignore entries starting with .\n");
printf(" -l, --list use a long listing format\n");
printf(" -h, --help display this help and exit\n");
exit(0);
default:
break;
}
}
if (argc > optind) {
strncpy(path, argv[optind], MAX_PATH);
}
DIR* dirp = opendir(path);
if (dirp == NULL) {
printf("Cannot open directory: %s\n", path);
exit(1);
}
struct dirent *dp;
while ((dp = readdir(dirp)) != NULL) {
if (all_flag == 0 && dp->d_name[0] == '.') {
continue;
}
char full_path[MAX_PATH];
snprintf(full_path, sizeof(full_path), "%s/%s", path, dp->d_name);
struct stat st;
if (lstat(full_path, &st) == -1) {
perror("lstat");
continue;
}
if (list_flag == 1) {
char buf[100];
strftime(buf, sizeof(buf), "%b %d %H:%M", localtime(&st.st_mtime));
printf("%c%s %ld %s %s %ld %s %s\n",
S_ISDIR(st.st_mode) ? 'd' : '-',
st.st_mode & S_IRUSR ? "r" : "-",
st.st_mode & S_IWUSR ? "w" : "-",
st.st_mode & S_IXUSR ? "x" : "-",
st.st_mode & S_IRGRP ? "r" : "-",
st.st_mode & S_IWGRP ? "w" : "-",
st.st_mode & S_IXGRP ? "x" : "-",
st.st_mode & S_IROTH ? "r" : "-",
st.st_mode & S_IWOTH ? "w" : "-",
st.st_mode & S_IXOTH ? "x" : "-",
st.st_nlink, getpwuid(st.st_uid)->pw_name,
getgrgid(st.st_gid)->gr_name,
st.st_size, buf, dp->d_name);
} else {
printf("%s ", dp->d_name);
}
}
closedir(dirp);
printf("\n");
return 0;
}
```
希望对你有所帮助!
用JAVA写一个定时任务,定时清理es mtime 30天之前的数据 采用 delete_by_query
可以使用 Quartz 定时任务框架来实现,以下是一个简单的示例代码:
首先引入相关依赖:
```xml
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.3.2</version>
</dependency>
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>7.0.0</version>
</dependency>
```
然后定义一个 Job 类来执行清理操作:
```java
import org.elasticsearch.action.delete.DeleteResponse;
import org.elasticsearch.action.deletebyquery.DeleteByQueryRequest;
import org.elasticsearch.action.deletebyquery.DeleteByQueryResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.index.query.QueryBuilders;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import java.io.IOException;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.util.Date;
public class EsCleanJob implements Job {
private RestHighLevelClient esClient;
public EsCleanJob(RestHighLevelClient esClient) {
this.esClient = esClient;
}
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
System.out.println("开始清理es数据...");
// 计算30天前的时间戳
LocalDateTime thirtyDaysAgo = LocalDateTime.now().minusDays(30);
long timestamp = thirtyDaysAgo.toInstant(ZoneOffset.of("+8")).toEpochMilli();
// 构建 delete by query 请求
DeleteByQueryRequest request = new DeleteByQueryRequest("index_name");
request.setQuery(QueryBuilders.rangeQuery("mtime").lt(timestamp));
// 执行 delete by query 操作
try {
DeleteByQueryResponse response = esClient.deleteByQuery(request, RequestOptions.DEFAULT);
System.out.println("清理完成,删除 " + response.getDeleted() + " 条数据");
} catch (IOException e) {
throw new JobExecutionException("清理es数据失败", e);
}
}
}
```
最后在主函数中启动定时任务:
```java
import org.elasticsearch.client.RestHighLevelClient;
import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;
public class EsCleanScheduler {
public static void main(String[] args) throws SchedulerException {
// 创建 es 客户端
RestHighLevelClient esClient = new RestHighLevelClient(/* es 配置 */);
// 创建 JobDetail 实例
JobDetail jobDetail = JobBuilder.newJob(EsCleanJob.class).withIdentity("esCleanJob").build();
// 创建 Trigger 实例
Trigger trigger = TriggerBuilder.newTrigger()
.withIdentity("esCleanTrigger")
.withSchedule(SimpleScheduleBuilder.repeatSecondlyForever(86400)) // 每隔一天执行一次
.build();
// 创建 Scheduler 实例
SchedulerFactory schedulerFactory = new StdSchedulerFactory();
Scheduler scheduler = schedulerFactory.getScheduler();
scheduler.start();
scheduler.scheduleJob(jobDetail, trigger);
}
}
```
这样就完成了定时清理 es 数据的任务。