Android 从时间戳获取日期和时间

Android 从时间戳获取日期和时间,android,timestamp,Android,Timestamp,我想从时间戳中分别得到时间和日期。请在这些方面帮助我。我的时间戳示例是1378798459 谢谢 试试这个 final Calendar cal = Calendar.getInstance(); cal.setTimeInMillis(System.currentTimeMillis()); Date date = cal.getTime(); mHour = date.getHours(); mMinute = date.getMinutes(); 试试这是我的工作 public Str

我想从时间戳中分别得到时间和日期。请在这些方面帮助我。我的时间戳示例是1378798459

谢谢

试试这个

final Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(System.currentTimeMillis());
Date date = cal.getTime();
mHour = date.getHours();
mMinute = date.getMinutes();

试试这是我的工作

public  String getDateCurrentTimeZone(long timestamp) {
        try{
            Calendar calendar = Calendar.getInstance();
            TimeZone tz = TimeZone.getDefault();
            calendar.setTimeInMillis(timestamp * 1000);
            calendar.add(Calendar.MILLISECOND, tz.getOffset(calendar.getTimeInMillis()));
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            Date currenTimeZone = (Date) calendar.getTime();
            return sdf.format(currenTimeZone);
        }catch (Exception e) {
        }
        return "";
    }
//试试下面的方法

SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
String dateString = formatter.format(new Date(Long.parseLong(YOUR TIMESTAMP VALUE)));
txtDate.setText(dateString);    
//您可以在此处输入所需格式:

SimpleDataFormat formatter=新的SimpleDataFormat(“您所需的格式”)

您也可以使用此选项:

Calendar c = new GregorianCalendar();  // This creates a Calendar instance with the current time
mHour = c.get(Calendar.HOUR);
mMinute = c.get(Calendar.MINUTE);
还有:

获取时间戳为字符串的当前日期---

只有时间——

String mytime = java.text.DateFormat.getTimeInstance().format(Calendar.getInstance().getTime());
只得到日期-

String mydate =java.text.DateFormat.getDateTimeInstance().format(Calendar.getInstance().getTime());
只是:

long timestampString =  Long.parseLong("yourString");
String value = new java.text.SimpleDateFormat("dd/MM/yyyy HH:mm:ss").
    format(new java.util.Date(timestampString * 1000));
你可以用这个

    Long tsLong = System.currentTimeMillis();
    String ts = tsLong.toString();

    long millisecond = Long.parseLong(ts);
    datetimeString = DateFormat.format("MM-dd-yyyy hh:mm:ss a", new Date(millisecond)).toString();
    timeString = datetimeString.substring(11);
    dateString = datetimeString.substring(0,10);
    String t2 = datetimeString.substring(20,21);
datetimeString包含日期时间AM/PM数据 timeString将为您提供仅包含时间的子字符串,dateString是date的子字符串
字符串t2将给出时钟中是AM还是PM,这将改进Pratik Dasa给出的答案

SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy");
在这里,您可以使用以下语法获得各种格式。您可以通过删除或添加以下语法中给出的术语来使用它

Date and Time Pattern                Result
-----------------------------        ---------------------------------
"yyyy.MM.dd G 'at' HH:mm:ss z"       2001.07.04 AD at 12:08:56 PDT
"EEE, MMM d, ''yy"                   Wed, Jul 4, '01
"h:mm a"                             12:08 PM
"hh 'o''clock' a, zzzz"              12 o'clock PM, Pacific Daylight Time
"K:mm a, z"                          0:08 PM, PDT
"yyyyy.MMMMM.dd GGG hh:mm aaa"       02001.July.04 AD 12:08 PM
"EEE, d MMM yyyy HH:mm:ss Z"         Wed, 4 Jul 2001 12:08:56 -0700
"yyMMddHHmmssZ"                      010704120856-0700
"yyyy-MM-dd'T'HH:mm:ss.SSSZ"         2001-07-04T12:08:56.235-0700
"yyyy-MM-dd'T'HH:mm:ss.SSSXXX"       2001-07-04T12:08:56.235-07:00
"YYYY-'W'ww-u"                       2001-W27-3

时间戳乘以1000以将秒转换为毫秒。

所有答案都很好,他们主要关注的是首先将
unix时间戳
转换为
毫秒
,这是正确的

我很难应用它,因为我必须在转换中使用
1000L
(而不是仅使用
1000
)。这是我的时区转换工作代码

// Set TimeZone
SimpleDateFormat dateFormat = new SimpleDateFormat("MM-dd-yy h:mm a", Locale.US);
dateFormat.setTimeZone(getDeviceTimeZone());
// Set time
Date date = new Date(timestamp * 1000L);
return dateFormat.format(date);
对于Android API 26及以上版本,您只需

return Instant.ofEpochSecond( timestamp )
        .atZone(ZoneId.of( timezone ))
        .toLocalDateTime()
        .toString();

从时间戳中获取日期的最佳方法是:

java.util.Date dayAndDate = new java.util.Date( (long) yourTimeStamp * 1000);
//对象像这样出现:2009年2月2日星期二

String day = dayAndDate.toString().split(" ")[0];

String month = dayAndDate.toString().split(" ")[1];

String date = dayAndDate.toString().split(" ")[2];

<强>我希望你会喜欢我的方法,如果你喜欢的话,别忘了给它一个赞成票,这样别人就会考虑它。<强> < /p> < P>如果你想在WhatsApp报文中使用时间,你可以使用这个方法,

public static String millisToDateChat(long time) {

        long currentTime = System.currentTimeMillis();
        long defe = currentTime - time;
        long  time_in;

        if(time!=0){   
            time_in = time;   
        }else{
            time_in = currentTime;
            defe = 0;
        }

        int s = (int)defe/1000;
        int m = (int)defe/(1000*60);
        int h = (int)defe/(1000*60*60);
        int d = (int)defe/(1000*60*60*24);
        int w = (int)defe/(1000*60*60*24*7);

        Calendar calendar = Calendar.getInstance();
        calendar.setTimeInMillis(time_in);
        Date date = calendar.getTime();
        @SuppressLint("SimpleDateFormat") String formattedDate=(new SimpleDateFormat("HH:mm")).format(date);
        @SuppressLint("SimpleDateFormat") String formattedYear=(new SimpleDateFormat("MMM d, ''yy")).format(date);
        @SuppressLint("SimpleDateFormat") String formattedm=(new SimpleDateFormat("MMM d")).format(date);

        if(d>365) {
            return formattedYear;
        }else if(s>172000){
            return formattedm;
        }else if(s>86400) {
            return "Yest.";
        }else{
            return formattedDate;
        }
    }

您是否尝试过以下方法:
date.getHours()
date.getMinutes()
现在已不推荐使用:(仅获取日期应为
getDateInstance()
,而不是
getDateTimeInstance()
。有关各种日期格式,请参阅此处。有关各种日期格式,请参阅此处
// Set TimeZone
SimpleDateFormat dateFormat = new SimpleDateFormat("MM-dd-yy h:mm a", Locale.US);
dateFormat.setTimeZone(getDeviceTimeZone());
// Set time
Date date = new Date(timestamp * 1000L);
return dateFormat.format(date);
return Instant.ofEpochSecond( timestamp )
        .atZone(ZoneId.of( timezone ))
        .toLocalDateTime()
        .toString();
java.util.Date dayAndDate = new java.util.Date( (long) yourTimeStamp * 1000);
String day = dayAndDate.toString().split(" ")[0];

String month = dayAndDate.toString().split(" ")[1];

String date = dayAndDate.toString().split(" ")[2];
public static String millisToDateChat(long time) {

        long currentTime = System.currentTimeMillis();
        long defe = currentTime - time;
        long  time_in;

        if(time!=0){   
            time_in = time;   
        }else{
            time_in = currentTime;
            defe = 0;
        }

        int s = (int)defe/1000;
        int m = (int)defe/(1000*60);
        int h = (int)defe/(1000*60*60);
        int d = (int)defe/(1000*60*60*24);
        int w = (int)defe/(1000*60*60*24*7);

        Calendar calendar = Calendar.getInstance();
        calendar.setTimeInMillis(time_in);
        Date date = calendar.getTime();
        @SuppressLint("SimpleDateFormat") String formattedDate=(new SimpleDateFormat("HH:mm")).format(date);
        @SuppressLint("SimpleDateFormat") String formattedYear=(new SimpleDateFormat("MMM d, ''yy")).format(date);
        @SuppressLint("SimpleDateFormat") String formattedm=(new SimpleDateFormat("MMM d")).format(date);

        if(d>365) {
            return formattedYear;
        }else if(s>172000){
            return formattedm;
        }else if(s>86400) {
            return "Yest.";
        }else{
            return formattedDate;
        }
    }