【问题标题】:How to get standard format date in android如何在android中获取标准格式日期
【发布时间】:2014-06-02 23:34:27
【问题描述】:

如果我尝试以下代码,例如:

我会将日期设置为 2014 年 7 月 25 日星期五上午 10:00。以毫秒为单位的日期为1402080056000,

现在,如果我尝试读取与以下相同的毫秒数

  long time = 1402080056000;

  Date mydate = new Date(time); 

mydate 变量显示日期为Sat Jun 25 00:10:56 IST 2014

  String DateTimeString = DateFormat.getDateTimeInstance().format(new Date(time));

使用 DateTimeString 中的上述语句,我得到日期为 Jun 25 , 2014 12:10:56 AM

如何读取1402080056000 to Fri July 25 2014 10:00 AM中的日期时间

【问题讨论】:

    标签: android sql date android-date


    【解决方案1】:

    试试下面的代码:

    private String convertMilliToDate(long timestamp) {
    
            DateFormat formatter = new SimpleDateFormat("YOUR DATE FORMAT");
    
            // Create a calendar object that will convert the date and time value in
            // milliseconds to date.
            Calendar calendar = Calendar.getInstance();
            calendar.setTimeInMillis(time);
            return formatter.format(calendar.getTime());
        }
    

    【讨论】:

    • 嗨,谢谢,如果我将时间戳传递为 0,我得到的日期时间为 01:01:70:05:30:00。但是为什么我早上 5.30,应该是 00 对吧?
    • 如果您将提供错误的数据进行转换,则默认情况下它将转换为该日期,例如 1-1-1970。因为时间戳计算从那个日期开始。所以你必须提供有效的时间戳才能转换。
    【解决方案2】:

    只需要处理格式字符串,

    String dateTimeString= 
    String.valueOf(new SimpleDateFormat("dd-MM-yyyy hh:mm").format(new Date(time)));  
    

    明确设置时区:

    SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy hh:mm");
    dateFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
    String result = String.valueOf(dateFormat.format(millis));  
    

    另外,这很有用Regarding Timezones and Java

    【讨论】:

    • 如果我传递 0 作为时间,我将得到日期为 01-01-1970 05:30。为什么不给 GMT 格式时间。即它应该给我 01-01-1970 00:00
    【解决方案3】:

    试试这个:

    String date= DateFormat.format("dd/MM/yyyy hh:mm:ss", new Date(date_in_milis)).toString();
    

    【讨论】:

    • 嗨,我需要 GMT 格式的日期,但为什么我得到 5.30 IST,
    • @Naruto .. 使用这个.. 你会在 GMT :)
    • 谢谢你,但我收到错误,DateFormat 类型中的方法格式(日期)不适用于参数(字符串,日期):(
    • @Naruto .. 立即尝试...我已编辑...只需将您的毫秒数替换为 date_in_milis...然后告诉我
    • 我试过了,但仍然出现错误,因为 DateFormat 类型中的方法格式(日期)不适用于参数(字符串,日期)
    【解决方案4】:

    使用适用于 Android 的 Joda-Time 库更轻松地进行日期时间工作。

    long millis = 1402080056000L;
    
    DateTimeZone timeZoneIndia = DateTimeZone.forID( "Asia/Kolkata" );
    DateTime dateTimeIndia = new DateTime( millis, timeZoneIndia );
    
    DateTime dateTimeFrance = dateTimeIndia.withZone( DateTimeZone.forID( "Europe/Paris" ) );
    
    DateTime dateTimeUtc = dateTimeIndia.withZone( DateTimeZone.UTC );
    

    要将字符串解析为日期时间,请在 StackOverflow 中搜索“Joda parse”以找到许多示例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-03
      • 2016-01-10
      • 2016-03-02
      • 2014-08-17
      • 1970-01-01
      • 1970-01-01
      • 2011-10-22
      • 2020-12-14
      相关资源
      最近更新 更多