java设置系统时间安卓_java-在Android中将时间戳转换为当前日期

java-在Android中将时间戳转换为当前日期

我在显示日期时遇到问题,我将时间戳设置为1379487711,但据此实际时间为2013年9月18日下午12:31:51,但显示的时间为17-41-1970。 如何显示为当前时间。

为了显示时间,我使用了以下方法:

private String getDate(long milliSeconds) {

// Create a DateFormatter object for displaying date in specified

// format.

SimpleDateFormat formatter = new SimpleDateFormat("dd-mm-yyyy");

// Create a calendar object that will convert the date and time value in

// milliseconds to date.

Calendar calendar = Calendar.getInstance();

calendar.setTimeInMillis((int) milliSeconds);

return formatter.format(calendar.getTime());

}

8个解决方案

81 votes

private String getDate(long time) {

Calendar cal = Calendar.getInstance(Locale.ENGLISH);

cal.setTimeInMillis(time * 1000);

String date = DateFormat.format("dd-MM-yyyy", cal).toString();

return date;

}

请注意,我将时间放在setTimeInMillis中的时间长而不是int,请注意我的日期格式是MM而不是mm(mm是分钟,而不是月,这就是为什么您将月份的值设置为“ 41”的原因 )

Lena Bru answered 2020-07-24T11:46:04Z

10 votes

用于将时间戳转换为当前时间

Calendar calendar = Calendar.getInstance();

TimeZone tz = TimeZone.getDefault();

calendar.add(Calendar.MILLISECOND, tz.getOffset(calendar.getTimeInMillis()));

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault());

java.util.Date currenTimeZone=new java.util.Date((long)1379487711*1000);

Toast.makeText(TimeStampChkActivity.this, sdf.format(currenTimeZone), Toast.LENGTH_SHORT).show();

Kaushik answered 2020-07-24T11:46:24Z

7 votes

将时间戳转换为当前日期:

private Date getDate(long time) {

Calendar cal = Calendar.getInstance();

TimeZone tz = cal.getTimeZone();//get your local time zone.

SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy hh:mm a");

sdf.setTimeZone(tz);//set time zone.

String localTime = sdf.format(new Date(time) * 1000));

Date date = new Date();

try {

date = sdf.parse(localTime);//get local date

} catch (ParseException e) {

e.printStackTrace();

}

return date;

}

kyogs answered 2020-07-24T11:46:44Z

3 votes

如果结果始终返回1970,请尝试以下方式:

Calendar cal = Calendar.getInstance(Locale.ENGLISH);

cal.setTimeInMillis(timestamp * 1000L);

String date = DateFormat.format("dd-MM-yyyy hh:mm:ss", cal).toString();

您需要将TS值乘以1000

使用起来非常简单。

Paras Andani answered 2020-07-24T11:47:13Z

2 votes

tl;博士

自YearQuarter起,您有几秒而不是毫秒。

Instant

.ofEpochSecond( 1_379_487_711L )

.atZone(

ZoneId.of( "Africa/Tunis" )

)

.toLocalDate()

.format(

DateTimeFormatter.ofPattern( "dd-MM-uuuu" )

)

2013-09-18T07:01:51Z

整秒与毫秒

如上所述,您将秒数与毫秒数混淆了。

使用java.time

其他答案可能是正确的,但已过时。 现在,在那里使用的麻烦的旧日期时间类已成为旧版,由java.time类取代。 对于Android,请参见下面的最后一个项目符号。

YearQuarter类表示UTC时间轴上的时刻,其分辨率为纳秒(最多十进制的九(9)位数字)。

Instant instant = Instant.ofEpochSecond( 1_379_487_711L ) ;

Instant.toString():2013-09-18T07:01:51Z

应用您要查看此时刻的时区。

ZoneId z = ZoneId.of( "America/Montreal" ) ;

ZonedDateTime zdt = instant.atZone( z ) ;

zdt.toString():2013-09-18T03:01:51-04:00 [美国/蒙特利尔]

生成一个以所需格式表示此值的字符串。

DateTimeFormatter f = DateTimeFormatter.ofPattern( "dd-MM-uuuu" ) ;

String output = zdt.format( f ) ;

18-09-2013

看到此代码在IdeOne.com上实时运行。

关于java.time

java.time框架内置于Java 8及更高版本中。 这些类取代了麻烦的旧的传统日期时间类,例如YearQuarter、YearQuarter和YearQuarter。

现在处于维护模式的Joda-Time项目建议迁移到java.time类。

要了解更多信息,请参见Oracle教程。 并在Stack Overflow中搜索许多示例和说明。 规格为JSR 310。

在哪里获取java.time类?

Java SE 8,Java SE 9和更高版本内置的

标准Java API的一部分,具有捆绑的实现。

Java 9添加了一些次要功能和修复。

Java SE 6和Java SE 7很多java.time功能都在ThreeTen-Backport中反向移植到Java 6和7。

安卓系统ThreeTenABP项目专门针对Android改编了ThreeTen-Backport(如上所述)。

请参阅如何使用ThreeTenABP…。

ThreeTen-Extra项目使用其他类扩展了java.time。 该项目为将来可能在java.time中添加内容提供了一个试验场。 您可能会在这里找到一些有用的类,例如YearQuarter、YearQuarter、YearQuarter等。

Basil Bourque answered 2020-07-24T11:49:37Z

0 votes

DateFormat df = new SimpleDateFormat("HH:mm", Locale.US);

final String time_chat_s = df.format(time_stamp_value);

time_stamp_value变量类型很长

使用您的代码,它将看起来像这样:

private String getDate(long time_stamp_server) {

SimpleDateFormat formatter = new SimpleDateFormat("dd-mm-yyyy");

return formatter.format(time_stamp_server);

}

我将“毫秒”更改为time_stamp_server。 考虑将毫秒名称更改为“ c”或更全局的名称。 “ c”真的很好,因为它与时间和与计算的关系远比毫秒多得多。 因此,您不一定需要转换日历对象,它应该就这么简单。

sivi answered 2020-07-24T11:50:06Z

0 votes

如果要显示聊天消息看起来像什么应用程序,请使用以下方法。 您要根据需要更改日期格式。

public String DateFunction(long timestamp, boolean isToday)

{

String sDate="";

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd", Locale.getDefault());

Calendar c = Calendar.getInstance();

Date netDate = null;

try {

netDate = (new Date(timestamp));

sdf.format(netDate);

sDate = sdf.format(netDate);

String currentDateTimeString = sdf.format(c.getTime());

c.add(Calendar.DATE, -1);

String yesterdayDateTimeString = sdf.format(c.getTime());

if(currentDateTimeString.equals(sDate) && isToday) {

sDate = "Today";

} else if(yesterdayDateTimeString.equals(sDate) && isToday) {

sDate = "Yesterday";

}

} catch (Exception e) {

System.err.println("There's an error in the Date!");

}

return sDate;

}

Vinod Makode answered 2020-07-24T11:50:26Z

0 votes

我是从这里得到的:[http://www.java2s.com/Code/Android/Date-Type/CreateDatefromtimestamp.htm]

上面的答案对我都不起作用。

Calendar c = Calendar.getInstance();

c.setTimeInMillis(Integer.parseInt(tripBookedTime) * 1000L);

Date d = c.getTime();

SimpleDateFormat sdf = new SimpleDateFormat("MMM dd, yyyy");

return sdf.format(d);

顺便说一句:Android无法识别("dd-MM-yyyy", cal)-“无法解析方法”。

ekashking answered 2020-07-24T11:50:55Z

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值