如何在 Java 中将“HH:MM”格式字符串转换为时间戳?

Posted

技术标签:

【中文标题】如何在 Java 中将“HH:MM”格式字符串转换为时间戳?【英文标题】:How do I convert "HH:MM" format string to Timestamp in Java? 【发布时间】:2017-03-20 10:50:27 【问题描述】:

我有一个字符串09:28.,我想将此字符串转换为Timestamp 对象。

下面是我的代码:

Object d = getMappedObjectValue(reportBeamDataMap, ReportBeamConstant.DAT_STOPDATE);
Date stopDate1 = (Date)d;
SimpleDateFormat printFormat = new SimpleDateFormat("hh:mm");
String timeString = printFormat.format(stopDate1);

现在我想在String 上方作为Timestamp(仅 HH:MM)。该怎么做?

【问题讨论】:

为什么不将stopDate1 转换为TimeStamp 而不是timeString 因为 stopDate1 也有日期和其他时间数据。我只想要 HH:MM。所以我先把它们串起来。但没关系,对象 d1 = getMappedObjectValue(reportBeamDataMap, ReportBeamConstant.DAT_STOPDATE);日期 stopDate12 = (日期)d1; SimpleDateFormat printFormat1 = new SimpleDateFormat("hh:mm");字符串 timeString1 = printFormat.format(stopDate1);时间戳 tm1 = new Timestamp(printFormat1.parse(timeString1).getTime());这工作得很好。谢谢 【参考方案1】:

如果您正在寻找今天 hh:mm 的时间戳,那么试试这个

static String todaysFtoTimestamp(String f)
    long todaystimestamp = ((System.currentTimeMillis() / 86400000 )  * 86400 );
    //System.out.println("today: " + todaystimestamp);
    long todaysftimestamp = Integer.parseInt(fToTimestamp(f)) + todaystimestamp;
    //System.out.println("todayF: " + todaysftimestamp);
    return todaysftimestamp+"";

static String fToTimestamp(String f)
    String[] fArray = f.split(":");
    String r = "null hehe";
    int hours = Integer.parseInt(fArray[0]);
    int minutes = Integer.parseInt(fArray[1]);
    r = String.valueOf((minutes + (hours * 60))*60);
    return r ;

【讨论】:

【参考方案2】:

您可以使用 LocalTime 来存储时间(来自字符串,反之亦然),如下所示:

选项(1):使用 Java8

这个可以使用Java8的LocalTime API,可以看here

String timeString = printFormat.format(stopDate1);
//Get your localTime object from timeString
LocalTime localTime = LocalTime.parse(timeString);

static LocalTime parse(CharSequence text) 获取一个实例 LocalTime 来自文本字符串,例如 10:15。

选项(2):不使用 Java8

需要用到jodatime库API,可以看here

【讨论】:

【参考方案3】:

请使用 parse 方法获取 Date 对象,然后构造 Timestamp 对象。

 try 
    Timestamp timestamp = new Timestamp(printFormat.parse(timeString).getTime());
     catch (ParseException e) 
        e.printStackTrace();
    

【讨论】:

【参考方案4】:

时间戳格式必须为 yyyy-mm-dd hh:mm:ss[.fffffffff]

您可以直接将日期对象转换为时间戳

 Timestamp timestamp = new Timestamp(stopDate1.getTime());

【讨论】:

以上是关于如何在 Java 中将“HH:MM”格式字符串转换为时间戳?的主要内容,如果未能解决你的问题,请参考以下文章

在 C# 中将 dateTime 转换为 ISO 格式 yyyy-mm-dd hh:mm:ss [重复]

如何在 Oracle 中将毫秒转换为 hh mm ss 格式

如何在 freemarker 语言中将当前日期格式(YYYY-MM-DD HH:MM:SS)转换为(YYMMDD)格式

仅在 javascript 中将 HH:MM:SS 字符串转换为秒

在 hive 中将时间格式从 'MM/dd/yyyy HH:mm:ss' 转换为 'MM-dd-yyyy' [关闭]

在 Hive 中将 dd/mm/yyyy/hh/mm/ss 格式更改为 yyyymm