我在显示日期方面遇到问题,我的时间戳为1379487711,但实际时间是9/18/2013 12:31:51 PM,但显示时间为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());
}
答案 0 :(得分:74)
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”,月份应为)
答案 1 :(得分:8)
将时间戳转换为当前日期:
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;
}
答案 2 :(得分:8)
将时间戳转换为当前时间
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();
答案 3 :(得分:3)
如果您的结果始终返回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
使用起来非常简单。
答案 4 :(得分:0)
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"非常好,因为它与时间和计算有关,而且比毫秒更全局。因此,您不一定需要转换日历对象,它应该就这么简单。
答案 5 :(得分:0)
如果您希望显示聊天消息看起来像应用程序,请使用以下方法。您希望根据您的要求更改日期格式。
inputElement.dispatchEvent(new KeyboardEvent("keyup", {key: "Enter", bubbles: true});
答案 6 :(得分:0)
自1970-01-01T00:00:00Z
以来,您有整秒,而不是毫秒。
Instant.ofEpochSecond( 1_379_487_711L )
.toString()
2013-09-18T07:01:51Z
如上所述,您将秒数与毫秒计数混淆。
其他答案可能是正确的,但已过时。那里使用的麻烦的旧日期时间类现在已经遗留下来,取而代之的是java.time类。对于Android,请参阅下面的最后一个项目符号。
Instant
类代表UTC中时间轴上的一个时刻,分辨率为nanoseconds(小数部分最多九(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 [美国/蒙特利尔]
请参阅此code run live at IdeOne.com。
java.time框架内置于Java 8及更高版本中。这些类取代了麻烦的旧legacy日期时间类,例如java.util.Date
,Calendar
和& SimpleDateFormat
现在位于Joda-Time的maintenance mode项目建议迁移到java.time类。
要了解详情,请参阅Oracle Tutorial。并搜索Stack Overflow以获取许多示例和解释。规范是JSR 310。
从哪里获取java.time类?
ThreeTen-Extra项目使用其他类扩展java.time。该项目是未来可能添加到java.time的试验场。您可以在此处找到一些有用的课程,例如Interval
,YearWeek
,YearQuarter
和more。
答案 7 :(得分:0)
我从这里得到的: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);
顺便说一句:("dd-MM-yyyy", cal)
无法被Android识别-“无法解析方法”。
答案 8 :(得分:0)
使用新功能->面向Java API的JAVA.TIME> API26
保存日期时间戳
@RequiresApi(api = Build.VERSION_CODES.O)
public long insertdata(String ITEM, String INFORMATION, Context cons)
{
long result=0;
// Create a new map of values, where column names are the keys
ContentValues values = new ContentValues();
LocalDateTime INTIMESTAMP = LocalDateTime.now();
values.put("ITEMCODE", ITEM);
values.put("INFO", INFORMATION);
values.put("DATETIMESTAMP", String.valueOf(INTIMESTAMP));
try{
result=db.insertOrThrow(Tablename,null, values);
} catch (Exception ex) {
Log.d("Insert Exception", ex.getMessage());
}
return result;
}
插入的日期时间戳将位于本地DATETIMEFORMAT 中,适合显示。[2020-07-08T16:29:18.647]。
希望有帮助!
答案 9 :(得分:0)
当前日期和时间:
private String getDateTime() {
Calendar calendar = Calendar.getInstance(Locale.ENGLISH);
Long time = System.currentTimeMillis();
calendar.setTimeInMillis(time);
//dd=day, MM=month, yyyy=year, hh=hour, mm=minute, ss=second.
String date = DateFormat.format("dd-MM-yyyy hh:mm:ss",calendar).toString();
return date;
}
注意:如果结果始终返回1970,请尝试以下方法:
Calendar calendar = Calendar.getInstance(Locale.ENGLISH);
calender.setTimeInMillis(time * 1000L);
String date = DateFormat.format("dd-MM-yyyy hh:mm:ss", calendar).toString();