java中如何将string类型格式化为Timestamp类型的时间,只要时分秒不要年月日?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java中如何将string类型格式化为Timestamp类型的时间,只要时分秒不要年月日?相关的知识,希望对你有一定的参考价值。

String t = “00:02:36”;
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
Timestamp ts = null;
try
ts = new Timestamp(sdf.parse(t).getTime());
catch (ParseException e)
// TODO 自动生成的 catch 块
e.printStackTrace();

格式化结果1970-01-01 00:02:36.0
如何去掉1970-01-01和.0,但类型还是Timestamp时间。

参考技术A String today = new SimpleDateFormat("HH:mm:ss").format(Calendar.getInstance().getTime());

如果格式还要维持Timestamp这个我真不知道了,

你要转换Timestamp格式只显示时间那就会转换成String 应该不太可能

Timestamp格式只显示HH:mm:ss<---这个吧 =="

追问

TimeSpan a = DataConverter.ChangeType(60);

//a的值是 00:01:00,其中60是指60秒。
这个是海关的需求,不只是c++还是C#写的。现在让
封装Java版TimeStamp类型。实现这个功能。蛋疼啊,我认为TimeStamp类型肯定会有日期怎么也格式化不掉。

本回答被提问者采纳
参考技术B 使用Timestamp的valueOf()方法
Timestamp ts = new Timestamp(System.currentTimeMillis());   
        String tsStr = "2011-05-09 11:49:45";   
        try    
            ts = Timestamp.valueOf(tsStr);   
            System.out.println(ts);   
         catch (Exception e)    
            e.printStackTrace();   
          

Timestamp ts = new Timestamp(System.currentTimeMillis());
String tsStr = "2011-05-09 11:49:45";
try 
ts = Timestamp.valueOf(tsStr);
System.out.println(ts);
 catch (Exception e) 
e.printStackTrace();

参考技术C HH:mm:ss 不要后面的 :ss 就好了追问

:ss是秒,去掉后1970-01-01 00:02:00.0这样啦。我要的是去掉日期后毫秒

追答

在显示的地方处理一下不行么
现在这种格式化后`你存到数据库里已经就没有毫秒了

如何使用 spark/scala 将 json 字符串格式化为 MongoDB 文档样式?

【中文标题】如何使用 spark/scala 将 json 字符串格式化为 MongoDB 文档样式?【英文标题】:How to format json string as MongoDB document style using spark/scala? 【发布时间】:2021-07-10 02:35:42 【问题描述】:

我有一个包含两列 id、json_string 的表,需要将 json_string 转换为 MongoDB 文档格式。我正在将数据从 Spark/Scala 发送到 MongoDB。

我尝试使用 withColumn,但仍然没有得到所需的格式。这是我到目前为止所拥有的,因此非常感谢任何帮助。

原始json字符串样本(df)

val df=spark.sql("select id, json_string from mytable")

"id":"0001","json_string":"\"header\": \"column1\":\"value1\",\"column2\":\"value2\",\"tail\": [\"column3\":\"value3\",\"column4\":\"value4\",\"column5\":\"value5\"]"

使用 withColumn (df2) 我得到这个:

val df2=df.withColumn("json_string",from_json(col("json_string"),MapType(StringType,StringType)))

"id":"0001","json_string":"header":"\"column1\":\"value1\",\"column2\":\"value2\"","tail":"[\"column3\":\"value3\",\"column4\":\"value4\",\"column5\":\"value5\"]"

所需格式:

"id":"$id":"0001","header":"column1":"value1","column2":"value2","tail":["column3":"value3","column4":"value4","column5":"value5"]

Desired format picture sample

【问题讨论】:

【参考方案1】:

您可以动态获取它并将其与from_json 一起使用,而不是手动定义架构

val json_schema = spark.read.json(df.select("json_string").as[String]).schema
val df2 = df.withColumn("json_string", from_json(col("json_string"), json_schema))
  .select("id", "json_string.*")

结果:

+----+----------------+--------------------------+
|id  |header          |tail                      |
+----+----------------+--------------------------+
|0001|value1, value2|[value3, value4, value5]|
+----+----------------+--------------------------+

架构:

root
 |-- id: string (nullable = true)
 |-- header: struct (nullable = true)
 |    |-- column1: string (nullable = true)
 |    |-- column2: string (nullable = true)
 |-- tail: array (nullable = true)
 |    |-- element: struct (containsNull = true)
 |    |    |-- column3: string (nullable = true)
 |    |    |-- column4: string (nullable = true)
 |    |    |-- column5: string (nullable = true)

【讨论】:

太棒了!有效!我为此苦苦挣扎,尝试了许多方法而没有成功。谢谢,非常感谢。

以上是关于java中如何将string类型格式化为Timestamp类型的时间,只要时分秒不要年月日?的主要内容,如果未能解决你的问题,请参考以下文章

如何将间隔类型格式化为 HH:MM 格式?

如何将 ZonedDateTime 格式化为字符串?

我如何对在java中格式化为高度的字符串数组列表进行排序?

如何将 3 位整数格式化为 4 位字符串? [复制]

将一个数字格式化为另一个数字的格式

将数字值从 XX.X 格式化为 .XXX java