日付の表示に問題があり、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());
}
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 "には月が必要です)
タイムスタンプを現在の時刻に変換するため
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();
タイムスタンプを現在の日付に変換します。
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;
}
結果が常に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倍する必要があります
使い方はとても簡単です。
ミリ秒ではなく、1970-01-01T00:00:00Z
以降の全秒数があります。
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クラスに取って代わられたレガシーです。 Androidについては、以下の最後の箇条書きを参照してください。
Instant
クラスは、 [〜#〜] 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 8以降に組み込まれています。これらのクラスは、面倒な古い legacyJava.util.Date
などの日時クラスに取って代わります。 Calendar
、& SimpleDateFormat
。
Joda-Time プロジェクト、現在 メンテナンスモード )は、 Java.time クラスへの移行を推奨しています。
詳細については、 Oracleチュートリアル を参照してください。多くの例と説明についてはStack Overflowを検索してください。仕様は JSR 310 です。
Java.timeクラスはどこで入手できますか?
ThreeTen-Extra プロジェクトは、Java.timeを追加のクラスで拡張します。このプロジェクトは、Java.timeに将来追加される可能性のある証明の場です。ここでは、 Interval
、 YearWeek
、 YearQuarter
、および more 。
私はこれをここから入手しました: 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-"メソッドを解決できません"によって認識されません。
DateFormat df = new SimpleDateFormat("HH:mm", Locale.US);
final String time_chat_s = df.format(time_stamp_value);
Time_stamp_value変数タイプはlongです
コードを使用すると、次のようになります。
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」は、ミリ秒よりもはるかにグローバルな方法で時間とコンピューティングに関連するため、本当に優れています。したがって、変換するために必ずしもカレンダーオブジェクトが必要というわけではなく、それはそれと同じくらい簡単でなければなりません。
チャットメッセージをアプリのように見せたい場合は、以下の方法を使用します。必要に応じて変更する日付形式。
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;
}