- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我试图显示两个日期之间的差异,按月、日、小时、分钟和秒分割。下面的代码似乎可以工作,只是时间总是晚 4 点。我尝试了 HOUR 和 HOUR_OF_DAY,但得到了相同的结果。
Calendar cal = Calendar.getInstance();
int year = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH);
int day = cal.get(Calendar.DAY_OF_MONTH);
int hour = cal.get(Calendar.HOUR);
int minutes = cal.get(Calendar.MINUTE);
int seconds = cal.get(Calendar.SECOND);
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
try {
//get the current date/time
Date beginDate = cal.getTime();
//fabricate a future date/time
Date endDate = dateFormat.parse(String.valueOf(year) + "-" + String.valueOf(month)
+ "-" + String.valueOf(day+95) + " " + String.valueOf(hour+2)
+ ":" + String.valueOf(minutes +16) + ":" + String.valueOf(seconds +34));
long millis = endDate.getTime() - beginDate.getTime();
TextView txtMonths = (TextView) findViewById(R.id.months);
txtMonths.setText("Months: " + (new SimpleDateFormat("M")).format(new Date(millis)));
TextView txtDays = (TextView) findViewById(R.id.days);
txtDays.setText("Days: " + (new SimpleDateFormat("d")).format(new Date(millis)));
TextView txtHours = (TextView) findViewById(R.id.hours);
txtHours.setText("Hours: " + (new SimpleDateFormat("h")).format(new Date(millis)));
TextView txtMinutes = (TextView) findViewById(R.id.minutes);
txtMinutes.setText("Minutes: " + (new SimpleDateFormat("m")).format(new Date(millis)));
TextView txtSeconds = (TextView) findViewById(R.id.seconds);
txtSeconds.setText("Seconds: " + (new SimpleDateFormat("s")).format(new Date(millis)));
} catch (ParseException ex) {
Log.d("ParseException", ex.toString());
}
有人认为这是因为时区。我是 GMT +8 并且 DST = true 所以
TimeZone timeZone = cal.getTimeZone();
timeZone.getOffset( System.currentTimeMillis()));
返回 7 小时而不是 4 小时。我是否缺少时区信息?
最佳答案
这是错误的我以为我有它,但我没有。
我认为这是时区,但我仍然不确定当我处于 GMT+8 且处于 DST 时它是如何得出 4 的。因此,虽然下面的代码似乎有效,但如果它在 7 或 8 点之前关闭,我会感觉更舒服。如果是这种情况,时区我会立即明白。
Java 可能很残酷。
Calendar cal = Calendar.getInstance();
TimeZone UTC = TimeZone.getTimeZone("UTC");
cal.setTimeZone(UTC);
int year = cal.get(Calendar.YEAR);
int month = cal.get(Calendar.MONTH);
int day = cal.get(Calendar.DAY_OF_MONTH);
int hour = cal.get(Calendar.HOUR);
int minutes = cal.get(Calendar.MINUTE);
int seconds = cal.get(Calendar.SECOND);
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
try {
//get the current date/time
Date beginDate = cal.getTime();
//fabricate a future date/time
endDate = dateFormat.parse(String.valueOf(year) + "-" + String.valueOf(month)
+ "-" + String.valueOf(day+95) + " " + String.valueOf(hour+2)
+ ":" + String.valueOf(minutes +1) + ":" + String.valueOf(seconds +34));
dateFormat.setTimeZone(UTC);
long millis = endDate.getTime() - beginDate.getTime();
if (TimeZone.getDefault().inDaylightTime( new Date())) {
millis += 3600000;
}
TextView txtMonths = (TextView) findViewById(R.id.months);
txtMonths.setText("Months: " + (new SimpleDateFormat("M")).format(new Date(millis)));
TextView txtDays = (TextView) findViewById(R.id.days);
txtDays.setText("Days: " + (new SimpleDateFormat("d")).format(new Date(millis)));
TextView txtHours = (TextView) findViewById(R.id.hours);
txtHours.setText("Hours: " + (new SimpleDateFormat("h")).format(new Date(millis)));
TextView txtMinutes = (TextView) findViewById(R.id.minutes);
txtMinutes.setText("Minutes: " + (new SimpleDateFormat("m")).format(new Date(millis)));
TextView txtSeconds = (TextView) findViewById(R.id.seconds);
txtSeconds.setText("Seconds: " + (new SimpleDateFormat("s")).format(new Date(millis)));
} catch (ParseException ex) {
Log.d("ParseException", ex.toString());
}
关于java - 下午 4 点就下类了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29884121/
我已尝试显示当前日期和时间。当前日期和时间运行良好,这是我的代码: NSDate *currDate = [NSDate date]; NSDateFormatter *dateFormatt
刚接触logstash,真的很享受。 尝试解析包含时间戳的 CSV 文件。想解析时间戳并将其用作@timestamp 字段。 我的 CSV 输入示例 input { stdin {} } fi
我有一个应用程序,允许用户选择他们的语言,选择语言后,它还会根据国家/地区的日期格式更改日期和时间。 我是通过NSDateFormatter实现的。-[dateFormatter setDateFor
我想在没有“AM/PM”的情况下获取今天的日期时间 DateTime dt=DateTime.Now; 给我 23/05/2016 03:16:51 AM 我想要的结果是: 23/05/2016 15
我有以下值。 var list = "09:05, 10:05, 12:30, 16:30 , ... , ..." 列表中values的类型是普通字符串,不是对象。 根据这个值,我想划分上午0点到1
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: Displaying the Time in AM/PM format in android 我可以获取时间
如何获取小写的月份名称和上午/下午 DateTime.Now.ToString("MMMM h:m tt"); 这给了我大写字母,但我想要小写字母。 最佳答案 你只需要使用 ToLower 方法 Da
如何将时间转换为 am/pm ? 我有这个输出 I/flutter (17720): 9:00:00 I/flutter (17720): 11:00:00 I/flutter (17720): 12
我有一个像这样的Hive表: create table my_table ( my_timestamp String ) my_timestamp的格式为YYYY-MM-DD HH:MM:SS。我需要
以下链接:How to check a timeperiod is overlapping another time period in java有助于检查给定时间戳是否与另一个时间戳重叠。 但是,只
我正在使用 asp.net MVC TextBoxFor 绑定(bind) bootstrap-datetimepicker。它可以在简单的输入类型文本框中正常工作。 但是当我将它与 mvc 文本框助
我得到一个格式为:MM-dd-yy hhmma zzz 的日期。问题是我只得到 AM 的 A 或 PM 的 P。如何将具有该格式的字符串解析为日期对象? 亚历克斯 最佳答案 使用这个'a' 示例:MM
我试图显示两个日期之间的差异,按月、日、小时、分钟和秒分割。下面的代码似乎可以工作,只是时间总是晚 4 点。我尝试了 HOUR 和 HOUR_OF_DAY,但得到了相同的结果。 Calenda
我需要获取日期对象中的字段 AM/PM。我怎样才能得到它? 这是我的代码。 String startTime ="01:05 PM"; SimpleDateFormat sdf = new Simp
这个问题在这里已经有了答案: How to get the time in am/pm format iphone NSDateFormatter? (8 个答案) Convert NSString
我正在尝试解析一些日期,但 DateTimeParser 似乎不同意我对什么是有效的 import java.time.ZonedDateTime import java.time.format.Da
在 Python 中,使用此函数(将东部标准时间 (EST) 与 am/pm 相结合,应以 3 种时间格式输出。中部时间 (CT)、山地时间 (MT) 和太平洋时间 (PT) 都在正确的上午/下午):
我有一个关于库 moment.js 的问题,我在 angularjs 中有一个应用程序,其中我有六个用于年、月、日、小时、分钟和上午/下午格式的选择元素。我正在使用以下格式时刻来构建 m.format
这个问题已经有答案了: How do I format a date in JavaScript? (69 个回答) 已关闭 3 年前。 我尝试用显示的 AM/PM 格式显示时间,但我找不到任何代码,
我想要这种格式: 2:18:00 pm 使用下面 w3Schools.com 中的示例代码,我可以从 IE 和 FireFox 获得正确的结果。 但是当谈到 Chrome 时,我得到了 24 小时时钟
我是一名优秀的程序员,十分优秀!