标签: simpledateformat

SimpleDateFormat 无法正确解析 AM 或 PM

我遇到了一些我不明白的事情。这是一个简单的操作(解析迄今为止的字符串),但它不考虑上午/下午,它总是设置上午。

这是我的示例,当我将 startDate 解析为 Date 时,它​​为其设置了 AM (我期望 PM)。

String startDate = "Thu Apr 02 04:50 PM 2020";
SimpleDateFormat sdf = new SimpleDateFormat("E MMM dd HH:mm a yyyy");
Date date1 = sdf.parse(startDate);
System.out.println(date1.toLocaleString());
Run Code Online (Sandbox Code Playgroud)

系统输出为

2020 年 4 月 2 日 4:50:00 上午

我做错了什么?请指教。

java simpledateformat

0
推荐指数
1
解决办法
152
查看次数

Kotlin SimpleDateFormat 解析错误的时区

我的移动时区是 GMT+7,我有一个代码可以将特定日期时间(GMT+0)转换为特定时区(GMT+3):

var strDate = "2020-07-10 04:00:00+0000"
var result: Date?
var dateFormatter = SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSZ")
dateFormatter.timeZone = TimeZone.getTimeZone("Asia/Jerusalem")
result = dateFormatter.parse(strDate)
Run Code Online (Sandbox Code Playgroud)

问题是结果总是返回“ Fri Jul 10 11:00:00 GMT+07:00 2020
,但我预计它将返回日期对象“ Fri Jul 10 07:00:00 GMT+03:00 2020 ”,知道是什么我的代码有问题吗?

timezone simpledateformat kotlin

0
推荐指数
1
解决办法
1万
查看次数

如何以英语和阿拉伯语显示日期格式?

您好,我想实现这样的日期格式“2021 \xd9\x86\xd9\x88\xd9\x81\xd9\x85\xd8\xa8\xd8\xb1”\n有人可以帮助我如何实现这种格式吗?

\n

这是我的示例源代码

\n
 SimpleDateFormat dateFormatter = new SimpleDateFormat("d MMM yyyy", locale);\n            dateString = dateFormatter.format(date);\n
Run Code Online (Sandbox Code Playgroud)\n

datetime android date arabic simpledateformat

0
推荐指数
1
解决办法
3869
查看次数

如何更改日期的时区 android kotlin [HH:mm]

作为输入,我得到一个类似 HH:mm 的字符串,它是 UTC。但我需要将时间转换为+3小时(即UTC+3)。

例如,原来是 12:30 - 现在变成了 15:30。

我尝试了这段代码,但它不起作用:(

fun String.formatDateTime(): String {
    val sourceFormat = SimpleDateFormat("HH:mm", Locale.getDefault())
    sourceFormat.timeZone = TimeZone.getTimeZone("UTC")
    val parsed = sourceFormat.parse(this)

    val tz = TimeZone.getTimeZone("UTC+3")
    val destFormat = SimpleDateFormat("HH:mm", Locale.getDefault())
    destFormat.timeZone = tz

    return parsed?.let { destFormat.format(it) }.toString()
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

android simpledateformat timezone-offset android-calendar kotlin

0
推荐指数
1
解决办法
4585
查看次数

为什么通过 SimpleDateFormat 解析时 Java 纪元时间会减少 30 分钟

不知何故,解析日期时间字符串并将其转换为纪元后的毫秒数在不同环境中的工作方式有所不同。时区之类的东西似乎有问题。理论上,该字符串应表示自纪元以来的 0 秒:“1970-01-01T00:00:00Z”

实际上,在开发人员机器上,这个时间神秘地是 30 分钟(18000000 毫秒)。

    /**
     * This really ought to return 0, but locally it returns 30 minutes worth of milliseconds.
     * @return The milliseconds since the common epoch. Really ought to be zero, but isn't always.
     */
    public long determineMysteriousMachineTimeDelta()  {
        String strDateOfEpochStart = "1970-01-01T00:00:00Z";
        SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
        Date dateStartOfEpoch = null;
        try {
            dateStartOfEpoch = format.parse(strDateOfEpochStart);

        } catch (ParseException e) {
            return -1;
        }
        return dateStartOfEpoch.getTime();
    }
Run Code Online (Sandbox Code Playgroud)

谢谢!

java epoch simpledateformat

0
推荐指数
1
解决办法
82
查看次数

从日期对象中获取错误的日期

我有这个代码

import java.text.SimpleDateFormat;
import java.util.Date;

public class TestClass {

  public static void main(String args[]) {
    SimpleDateFormat f = new SimpleDateFormat("YYYY-MM-DD HH:MM:SS");
    Date d = new Date();
    System.out.println(f.format(d));        
  }
}
Run Code Online (Sandbox Code Playgroud)

我预计输出应该是

OutPut: 2013-07-05 19:07:983 (current date time)
Run Code Online (Sandbox Code Playgroud)

但我得到的输出如下

Output: 2013-07-186 19:07:983
Run Code Online (Sandbox Code Playgroud)

我的代码有什么问题?当我打印这一行时,d.toString()我得到了正确的日期.

java date simpledateformat

-1
推荐指数
1
解决办法
124
查看次数

将字符串"22/08/2013"​​转换为日期格式2013/08/22

这是我在scala中的代码

 var s:String ="22/08/2013"
 var  simpleDateFormat:SimpleDateFormat = new SimpleDateFormat("yyyy-mm-dd");
 var  date:Date = simpleDateFormat.parse(s);
 println(date)
Run Code Online (Sandbox Code Playgroud)

日期不变.格式日期相同22/08/2013存在于2013年8月22日没有变化

如何在scala中将格式dd/mm/yyyy更改为yyyy/mm/dd

scala date date-format simpledateformat

-1
推荐指数
1
解决办法
1万
查看次数

SimpleDateFormat的问题

我正在研究日期格式SimpleDateFormat.但是当我以提供格式格式化我的日期时,年份值增加1.条件发生在该值.为什么会这样?

SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-YYYY");
System.out.println("dob - "+date); // Java date
System.out.println("formatted date - "+sdf.format(date));
Run Code Online (Sandbox Code Playgroud)

输出如下:

dob - Sun Dec 28 00:00:00 IST 1975
formatted date - 28-12-1976
Run Code Online (Sandbox Code Playgroud)

年份值增加1.为什么会发生这种情况.

java date simpledateformat

-1
推荐指数
1
解决办法
246
查看次数

在SimpleDateFormat中将Date转换为String

我想将日期格式转换为字符串,但字符串输出不会到来

  DateFormat currentDate = new SimpleDateFormat("dd MM yyyy ");
  String currDateString = String.valueOf(currentDate);
  System.out.println(currDateString);
Run Code Online (Sandbox Code Playgroud)

java date simpledateformat

-1
推荐指数
1
解决办法
4475
查看次数

DST更改导致java.text.ParseException:Unparseable date

以下是抛出异常的代码片段:

SimpleDateformat dateFormatter = new SimpleDateFormat("yyyyMMddHHmm");
Date date = dateFormatter.parse("201710010200");
Run Code Online (Sandbox Code Playgroud)

上面的代码在凌晨2点之后的所有日期都抛出了异常.它一直运行到凌晨01:30

DayLight节省时间已配置(我正在使用Australia/Sydney时区).

之后,我可以看到3:00 AM的日志在凌晨2:00到凌晨3:00之间的日志也没有记录.

日志:

01 Oct 03:02:01错误:无法解析日期:"201710010200"

引起:java.text.ParseException:无法解析的日期:java.text.DateFormat.parse中的"201710010200"(DateFormat.java:357)

什么可以解决日期字符串"201710010200"没有被解析的问题,并指定了正确的日期格式?

java dst simpledateformat datetime-parsing

-1
推荐指数
1
解决办法
425
查看次数