【问题标题】:Android / Java convert String date to long typeAndroid/Java 将 String 日期转换为 long 类型
【发布时间】:2014-11-24 23:27:55
【问题描述】:

我需要将格式为“dd/mm/yyyy”的字符串转换为长类型。为了将值传递给android中的calendarProvider。

目前我有:

Calendar calendar = Calendar.getInstance();
long startEndDate = 0;
Calendar currentDateInfo = Calendar.getInstance();
currentDateInfo.set(calendar.get(Calendar.YEAR), calendar.SEPTEMBER, calendar.get(Calendar.DAY_OF_MONTH));
startEndDate = currentDateInfo.getTimeInMillis();

我需要:

long startDate = *Some sort of conversion* EditText.getText();

我已尝试使用 SimpleDateFormat,但在获取正确类型时遇到问题。任何帮助将非常感激。

【问题讨论】:

  • 展示你使用SimpleDateFormat的尝试——这是正确的方法。

标签: java android date calendar android-contentprovider


【解决方案1】:

您可以使用以下代码从格式为“dd/mm/yyyy”的字符串日期获取长值(自 1970 年 1 月 1 日 00:00:00 GMT 以来的毫秒数)。

try {
    String dateString = "30/09/2014";
    SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
    Date date = sdf.parse(dateString);

    long startDate = date.getTime();

} catch (ParseException e) {
    e.printStackTrace();
}

【讨论】:

  • @Ken Wolf 是否可以将两个单独的字符串,一个日期字符串和一个时间字符串合并为一个字符串(例如,“30/09/2014”和“10:00 PM”合并为“ 30/09/2014 10:00 PM" 要从组合字符串中获取长值?日期字符串格式为“dd/MM/yyyy”,时间字符串格式为“h:mm a”。
  • 是的,这是可能的——您只需将 2 个字符串组合成 1 个字符串并对其进行解析。您必须确保两个字符串都遵循正确的格式。
  • @Ken Wolf 非常棒。是否有任何约定,例如在日期字符串的结尾和时间字符串的开头之间保留一个空格?最好查看 SimpleDateFormat 示例以查看不同的格式,还是推荐其他内容进行查看?
  • 这里的第一个很常见:fileformat.info/tip/java/simpledateformat.htm 我会选择 :)
  • 没有 try catch 块留在生产代码中。你用它来捕获异常——然后你可以对它们做任何你想做的事情(本地登录、远程登录、执行一些其他代码、向用户显示一条消息)。
【解决方案2】:

像这样使用你的代码

String[] dateArray = dateString.split("-");

int year = Integer.parseInt(dateArray[0]);
int month = Integer.parseInt(dateArray[1]);
int date = Integer.parseInt(dateArray[2]);

GregorianCalendar gc = new GregorianCalendar(year,month,date);
long timeStamp = gc.getTimeInMillies();

【讨论】:

    猜你喜欢
    • 2021-10-08
    • 1970-01-01
    • 2019-07-31
    • 2021-10-24
    • 2018-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-29
    相关资源
    最近更新 更多