JQ长字符串转化为yyyy-MM-dd日期格式
时间: 2023-12-28 10:05:46 浏览: 158
假设JQ中的长字符串形如 "20211231",可以使用如下代码将其转换为 yyyy-MM-dd 的日期格式:
```javascript
var dateString = "20211231";
var year = dateString.substring(0, 4);
var month = dateString.substring(4, 6);
var day = dateString.substring(6, 8);
var date = year + "-" + month + "-" + day;
console.log(date); // 输出 2021-12-31
```
其中,`substring()` 方法用于截取字符串的一部分。第一个参数表示开始位置(包含),第二个参数表示结束位置(不包含)。因此,`dateString.substring(0, 4)` 就是获取字符串的前4个字符(即年份)。同理,`dateString.substring(4, 6)` 和 `dateString.substring(6, 8)` 就是获取字符串中的月份和日期。最后,将这些部分拼接起来,中间用短横线分隔即可得到 yyyy-MM-dd 的日期格式。
相关问题
我有一个json文件test.json,它{"content":[{"reader":{"name":"mysqlreader","parameter":{"username":"root","connection":{{"querySql":["select a < ${param_date}"],"jdbcUrl":["aaa"]}}}}}]}, 我希望有一句不使用jq的shell指令,可以将这个json中的querySql字段中的${param_date}替换为今天日期的YYYY-MM-DD并保存在这个文件。
你可以使用Python来实现这个功能,使用Python中的json和datetime模块来读取和修改json文件,具体实现如下:
```python
import json
from datetime import date
# 读取json文件
with open('test.json', 'r') as f:
data = json.load(f)
# 替换querySql中的${param_date}
today = date.today().strftime('%Y-%m-%d')
data['content'][0]['reader']['parameter']['connection']['querySql'][0] = data['content'][0]['reader']['parameter']['connection']['querySql'][0].replace('${param_date}', today)
# 保存修改后的json文件
with open('test.json', 'w') as f:
json.dump(data, f, indent=4)
```
这个Python脚本首先打开test.json文件,使用json模块将其读取为Python对象。然后,使用datetime模块获取今天的日期,并将其格式化为YYYY-MM-DD的字符串。接着,修改json对象中的querySql字段,将其中的${param_date}替换为今天的日期字符串。最后,将修改后的json对象重新写入到test.json文件中。
fastjson怎么将对象转换成带特殊字符的标准格式字符串
fastjson支持将对象转换成带特殊字符的标准格式字符串,可以通过使用JSON.toJSONStringWithDateFormat()方法来实现。
该方法有三个参数:
- Object object:要转换的对象
- String dateFormat:日期格式
- SerializerFeature[] features:序列化特性
其中,第三个参数SerializerFeature[] features可以用来设置序列化特性,比如是否输出null值属性、是否格式化输出等。
以下是一个示例代码:
```java
public class User {
private String name;
private int age;
public User(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
public class Main {
public static void main(String[] args) {
User user = new User("Tom", 18);
String jsonString = JSON.toJSONStringWithDateFormat(user, "yyyy-MM-dd HH:mm:ss",
SerializerFeature.PrettyFormat,
SerializerFeature.WriteMapNullValue,
SerializerFeature.WriteNullStringAsEmpty);
System.out.println(jsonString);
}
}
```
运行上述代码,输出结果如下:
```
{
"name": "Tom",
"age": 18
}
```
其中,输出的json字符串的属性名和属性值都带有双引号,满足标准格式。
阅读全文