我一直在搜索,只是无法找到解释或原因发生这种情况,但DateFormat的解析(String)方法只是没有正确解析我的字符串.
我正在尝试将一个String解析为用于HTTP头的日期格式,并获得了自己的String,例如:
Thu, 11 Nov 2010 18:34:22 GMT
Run Code Online (Sandbox Code Playgroud)
其格式如下:
E, d MMM yyyy HH:mm:ss z
Run Code Online (Sandbox Code Playgroud)
但是当我使用df.parse(dateStr);它时,我就是这样做的:
Thu Nov 11 18:34:22 GMT 2010
Run Code Online (Sandbox Code Playgroud)
这与我想要的完全不同,为什么GMT之后的那一年呢?为什么不再有逗号?为什么这个月之后的日期呢?
我现在对此完全感到困惑,无法找到解决方案,但我确实需要以该格式提供日期.逗号弄乱了吗?还是冒号?
谢谢你的时间,
Infinitifizz
PS
忘了提这个,但我尝试过dateformat.setLenient(false)并没有什么区别.
PPS
我正在尝试这样做来比较日期与date1.before(date2)和after()等,看看是否有一个比另一个更新,但我不能这样做,因为解析不起作用.
即使它们看起来相同但只是格式不同,它们也不一样,因为在它们两个上调用getTime()之后(当我提供了2个相同的日期时)长度不一样.截至日期为:
星期四,2010年11月11日19:38:52 GMT对文件的lastModified()
如果我输入字符串"星期四,2010年11月11日19:38:52 GMT",然后比较他们的长片一旦使用parse()将字符串转换为日期,然后在该日期调用getTime()我得到:
lastModified = 1289504332671 fromString = 1289504332000
它只是最后3位不同,这有什么意义吗?
再次感谢您的时间和抱歉,我没有把这一点放在第一位,
Infinitifizz
我在解析 csv 文件中的日期时遇到问题。一直在网上、书籍和测试中寻找数小时,但没有找到解决方案。
也许有人可以提供帮助。
该代码适用于读取仅解析数字的文件。但是在解析带有日期的文件时,我收到以下错误消息,指示无法识别日期格式:
Problem parsing d="MNaN,268.5466377440347LNaN,117.78741865509761LNaN ...
Run Code Online (Sandbox Code Playgroud)
该文件如下所示:
date,value
11-11-13,582
12-11-13,860
13-11-13,940
Run Code Online (Sandbox Code Playgroud)
代码:(js)
function myFunction() {
d3.csv('data/Date.csv', draw);
}
function draw(data) {
"use strict";
var margin = 50,
width = 800 - margin,
height = 350 - margin;
var parseDate = d3.time.format("%d-%m-%y").parse;
var x_scale = d3.time.scale()
.domain(d3.extent(data,function(d){return d.date}))
.range([margin, width]);
var y_scale = d3.scale.linear()
.domain(d3.extent(data,function(d){return d.value}))
.range([height, margin]);
var x_axis = d3.svg.axis()
.scale(x_scale)
.orient("bottom");
var y_axis = d3.svg.axis()
.scale(y_scale)
.orient("left");
var line = d3.svg.line()
.x(function(d){return x_scale(d.date);})
.y(function(d){return y_scale(d.value);}); …Run Code Online (Sandbox Code Playgroud) new Date("2014 Aug 11")给出Mon Aug 11 2014 00:00:00 GMT+0100 (GMT Daylight Time)哪个是正确的,但是
new Date("2014-08-11")给Mon Aug 11 2014 01:00:00 GMT+0100 (GMT Daylight Time).
为什么这两个日期有1小时的差异?
我试图减去2个日期,如果两个日期相同,则期望结果为"0".但在我上面的例子中,它不是零!
这是一个关于在 strftime 中使用日期解析符号的简单问题。以下格式的给定日期:
mydt = "25-06 01:02:03"
Run Code Online (Sandbox Code Playgroud)
然后我尝试正确解析字符串是:
DateFormat = '%d-%m %H:%M:%S'
Run Code Online (Sandbox Code Playgroud)
但显然这是不正确的:
import dateutil.parser
DateFormat = '%d-%m %H:%M:%S'
mydt = "25-06 01:02:03"
dateutil.parser.parse(mydt).strftime(DateFormat)
ValueError: month must be in 1..12
Run Code Online (Sandbox Code Playgroud)
请建议对解析模式进行适当的调整/修复。
我正在尝试使用日期格式的两组日期:
DateFormat format = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss");
Run Code Online (Sandbox Code Playgroud)
它适用于以下日期:2016 年 8 月 26 日星期五 13:55:34 +0000
不适用于日期:2016 年 9 月 6 日,星期二 11:57:14 +0100
引发 +0100 日期的异常。
Unparseable date: "Tue, 06 Sep 2016 11:57:14 +0100" (at offset 0)
at java.text.DateFormat.parse(DateFormat.java:555)
Run Code Online (Sandbox Code Playgroud) 我在javascript中遇到日期解析问题.
我可以有不同格式的日期,所以我需要有通用解析器.我使用Date.parse(),但有人可以解释为什么会发生这种情况:
Date.parse("1/07/2018");
1515279600000
Run Code Online (Sandbox Code Playgroud)
但
Date.parse("26/07/2018");
NaN
Run Code Online (Sandbox Code Playgroud)
今天是7月26日,为什么它有南??
我正在尝试使用 java.time.format.DateTimeFormatter 来解析时间字符串,但在解析德语短日名称时遇到问题。
鉴于以下程序
import java.time.DayOfWeek;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeFormatterBuilder;
import java.time.format.TextStyle;
import java.util.Locale;
var locale = Locale.forLanguageTag("de");
var dtf = new DateTimeFormatterBuilder()
.appendOptional(DateTimeFormatter.ofPattern("eeee"))
.appendOptional(DateTimeFormatter.ofPattern("eee"))
.toFormatter(locale);
var input1 = DayOfWeek.TUESDAY.getDisplayName(TextStyle.FULL, locale);
var input2 = DayOfWeek.TUESDAY.getDisplayName(TextStyle.SHORT_STANDALONE, locale);
System.out.printf("input: %s, parsed: %s\n", input1, dtf.parse(input1));
System.out.printf("input: %s, parsed: %s\n", input2, dtf.parse(input2));
Run Code Online (Sandbox Code Playgroud)
我期望的输出是
input: Dienstag, parsed: {DayOfWeek=2},ISO
input: Di, parsed: {DayOfWeek=2},ISO
Run Code Online (Sandbox Code Playgroud)
但我实际上得到
input: Dienstag, parsed: {DayOfWeek=2},ISO
Exception in thread "main" java.time.format.DateTimeParseException: Text 'Di' could not be parsed, unparsed text found at index 0
at …Run Code Online (Sandbox Code Playgroud) 我已经阅读了一个 .xlsb 文件并使用以下代码解析了日期列:
dateparser = lambda x: pd.to_datetime(x)
data = pd.read_excel(r"test.xlsb", engine="pyxlsb",
parse_dates=["start_date","end_date"],
date_parser=dateparser
)
Run Code Online (Sandbox Code Playgroud)
我在 .xlsb 文件中的输入列的格式为DD/MM/YYYY(例如 26/01/2008)。作为我得到的上述代码的输出,例如:1970-01-01 00:00:00.000038840。只有最后 5 位数字会发生变化。
如果我在不解析日期的情况下读取同一个文件,则相同的列是 float64 类型并且只包含之前输出的最后 5 位数字(例如38840.0)。
我认为这是与日期编码本身相关的问题。有谁知道如何解决这个问题?
我有一个字符串,例如“mon”或“tue”或“sun”。我想将其解析为 a DayOfWeek(如果不成功则为 null)。
我正在使用 Kotlin,但我想 Java 人员也会明白我想做什么:
private fun String.parseToDayOfWeek(pattern: String = "EE") =
try {
DateTimeFormatter.ofPattern(pattern, Locale.US).parse(this, DayOfWeek::from)
} catch (e: Exception){
null
}
Run Code Online (Sandbox Code Playgroud)
这不起作用,我只是得到nulls。
相反,在我解析它之前,我必须像这样清理字符串:
val capitalized = this.lowercase().replaceFirstChar { it.uppercase() }
Run Code Online (Sandbox Code Playgroud)
这感觉很麻烦。我使用的 api 是错误的还是这是一个巨大的绊脚石?
我需要将"11/17"字符串日期(2017年11月)转换为"2017-11-01"(2017年11月1日).
在Java中实现这一目标的最佳方法是什么?
我试过了:
String dayMonthYear = "11/17";
dayMonthYear = "01/" + dayMonthYear;
DateTimeFormatter formatter = DateTimeFormat.forPattern("dd/MM/yy");
DateTime dt = formatter.parseDateTime(dayMonthYear);
dt.year().setCopy(dt.getYear() + 2000);
DateTimeFormatter dtfOut = DateTimeFormat.forPattern("yyyy-MM-dd");
dayMonthYear = dtfOut.print(dt);
System.out.println(dayMonthYear); // "2017-11-01";
Run Code Online (Sandbox Code Playgroud)
和:
SimpleDateFormat dateFormatTwoDigitsYear = new SimpleDateFormat(TWO_DIGITS_YEAR_DATE_FORMAT); //"dd/MM/yy"
SimpleDateFormat dateFormatFourDigitsYear = new SimpleDateFormat(FOUR_DIGITS_YEAR_DATE_FORMAT);// "yyyy-MM-dd"
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.YEAR, -100);//??? I AM NOT SURE WHY DO I NEEED THIS??
dateFormatTwoDigitsYear.set2DigitYearStart(calendar.getTime());
try
{
dayMonthYear = dateFormatFourDigitsYear.format(dateFormatTwoDigitsYear.parse(dayMonthYear));
}
catch (ParseException e)
{
log.error("Error while formatting date …Run Code Online (Sandbox Code Playgroud) date-parsing ×10
java ×5
date ×4
datetime ×2
java-time ×2
javascript ×2
python ×2
csv ×1
d3.js ×1
date-format ×1
dayofweek ×1
jodatime ×1
locale ×1
pandas ×1
xlsb ×1