【问题标题】:get date from timestamp从时间戳获取日期
【发布时间】:2012-05-25 06:45:59
【问题描述】:

我的代码是:

import java.text.*;
import java.util.Date;

public class DateEx {
    public static void main(String[] args) {
        //String valueFromDB = "2012/06/06 00:00:00";

        String valueFromDB = "2012-12-31 00:00:00.0";
        Date d = new Date(valueFromDB);
        SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
        String dateWithoutTime = sdf.format(d);

        System.out.println("sdf.format(d) " + dateWithoutTime);

    }
}

它适用于"2012/06/06 00:00:00",我需要通过"2012-12-31 00:00:00.0" 它显示非法参数。可能是因为我在日期中使用了"-",或者因为时间戳小数秒。我需要dd-mm-yyyy 格式的日期。

【问题讨论】:

    标签: java date-format simpledateformat


    【解决方案1】:

    这可能会有所帮助。

    long dateTimeStamp = 1487269800;
    Timestamp stamp = new Timestamp(dateTimeStamp*1000);
    Date changeDate = new Date(stamp.getTime());
    

    输出:

    Date :Fri Feb 17 00:00:00 IST 2017
    

    【讨论】:

    • 明确说明您的答案与问题的关系。您提供的答案似乎描述性不够!
    • 看到时间戳是从 db 中获取的 long ,现在转换为毫秒,并在 java 时间戳中创建,用于通过调用 Date 的构造函数来获取日期...... ........
    【解决方案2】:

    试试这个 -

    SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.S");
    String valueFromDB = "2012-12-31 00:00:00.0";
    Date d1 = sdf1.parse(valueFromDB);
    SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
    String dateWithoutTime = sdf.format(d1);
    System.out.println("sdf.format(d) " + dateWithoutTime);
    

    【讨论】:

    • thnks juniad 的解决方案,但我想了解你能解释的代码。
    • 首先将字符串解析为日期。在此过程中,让它知道您使用哪种格式。将日期对象传递给格式化程序,将其格式化为您想要的方式。
    【解决方案3】:

    要将字符串解析为日期类型,请使用以下代码:

    DateFormat formatter;
    Date date;
    formatter = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
    date = (Date)formatter.parse("2012-12-31 00:00:00");
    

    【讨论】:

    • 要解析带有小数秒的字符串,您应该在格式中添加一个 .S:yyyy-MM-dd hh:mm:ss.S
    猜你喜欢
    • 1970-01-01
    • 2021-09-26
    • 1970-01-01
    • 2011-02-20
    • 2012-07-10
    • 2016-11-28
    • 2011-11-11
    • 2017-07-24
    相关资源
    最近更新 更多